<div dir="rtl"><div dir="ltr">Hi G M,</div><div dir="ltr"><br></div><div dir="ltr">This patch will solve the redefinition problem (since it's identical definition) but may get lost if someone manually changes back the format to be consistent with the rest of libcxx or just clang-formats the file without realizing the whitespace is important.</div>

<div dir="ltr"><br></div><div dir="ltr">Yaron</div><div dir="ltr"><br></div></div><div class="gmail_extra"><div dir="ltr"><br><br><div class="gmail_quote">2014/1/6 G M <span dir="ltr"><<a href="mailto:gmisocpp@gmail.com" target="_blank">gmisocpp@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 .8ex;border-left:1px #ccc solid;border-right:1px #ccc solid;padding-left:1ex;padding-right:1ex">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><div class="h5"><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></div><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></blockquote></div></div></div>