<div dir="ltr">Hi everyone (sorry for the late reply, I've been on holiday)<br><div class="gmail_extra"><br></div><div class="gmail_extra">Regarding the  _NOEXCEPT macro and it's interaction with MSVC's version of it, mentioned by yaron here:<br>
<br></div><div class="gmail_quote">On Fri, Dec 27, 2013 at 1:52 AM, Yaron Keren <span dir="ltr"><<a href="mailto:yaron.keren@gmail.com" target="_blank">yaron.keren@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
<div dir="rtl"><div dir="ltr">With Visual C++ __config redefines _NOEXCEPT resulting in a warning:</div><div dir="ltr"><br></div><div dir="ltr"><div dir="ltr"><font face="courier new, monospace">ibcxx\include\__config(434) : warning C4005: '_NOEXCEPT' : macro redefinition</font></div>


<div dir="ltr"><font face="courier new, monospace">        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\yvals.h(25) : see previous definition of '_NOEXCEPT'</font></div><div dir="ltr"><br></div>

<div>
I checked and at least Visual C++ 2012, 2013 define _NOEXCEPT in yvals.h.</div><div><br></div><div>This patch #ifndef _NOEXCEPT to avoid the warning.</div><div><br></div><div>Alternative solution could be to remove it completely, as Visual C++ seems to supply it. Maybe it was for an older version of Visual C++.</div>
<span><font color="#888888">

<div><br></div><div>Yaron</div><div><br></div></font></span></div></div>
</blockquote></div><p><br></p><div>I actually submitted a "fix" for this myself sometime ago but it seems it got "lost".</div><div class="gmail_extra"><br></div><div class="gmail_extra">MSVC's yvals.h (or something like that) defines _NOEXCEPT as the same thing except for spacing.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">My previously submitted solution which I'm attaching here again, is just to change libcxx's definition to exactly match (i.e. the white space) MS's definition that MS's yvals.h uses.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">This stops MSVC from complaining about duplicate definitions when yvals.h is included after __config and effectively removes 100's of warnings for the msvc build of libcxx.<br>
</div><div class="gmail_extra"><br></div><div class="gmail_extra">I can't see any risk to libcxx here on other platforms.</div><div class="gmail_extra"><br></div><div class="gmail_extra">There weren't any objections when I submitted this patch before, it was just forgotten. Any objections to this patch this time?</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Thanks</div><div class="gmail_extra">PS As a suggestion: It'd be great if the _NOEXCEPT_ macro (as opposed to the one without a trailing _) in libcxx's __config header had a different name. It's too close to _NOEXCEPT and an easy mistake make. MS use _NOEXCEPT_OP instead for _NOEXCEPT_ which I think that's much clearer. A mechanical tool could perhaps be used to make this change? I imagine there's no will to do this though. Just a suggestion anyway.</div>
<div class="gmail_extra"><br></div></div>