<div dir="ltr">Ping.<br><br><a href="http://llvm-reviews.chandlerc.com/D2384">http://llvm-reviews.chandlerc.com/D2384</a><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 6, 2014 at 10:01 PM, Logan Chien <span dir="ltr"><<a href="mailto:tzuhsiang.chien@gmail.com" target="_blank">tzuhsiang.chien@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Ping.<br><br></div>Summary:  This patch is a part of the efforts (and the last one) to make g++ being able to compile libc++ *headers* in C++98 mode.  This patch removes the default function template arguments in <memory> and preserve SFINAE by moving enable_if<> to function return type or argument type.<br>

<br>For example,<br>
<br>-    template <class _Pp,<b> class = typename enable_if<...></b>><br>-    _LIBCPP_INLINE_VISIBILITY explicit unique_ptr(_Pp __p) _NOEXCEPT<br><br></div>is changed to:<br><div><br>+    template <class _Pp><br>

+    _LIBCPP_INLINE_VISIBILITY explicit unique_ptr(_Pp __p,<br>+            <b>typename enable_if<..., __nat>::type = __nat()</b>) _NOEXCEPT<br><br></div><div>Please have a look.  Thanks.<br><br></div><div>Sincerely,<br>

Logan<br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Dec 28, 2013 at 1:54 AM, Logan Chien <span dir="ltr"><<a href="mailto:tzuhsiang.chien@gmail.com" target="_blank">tzuhsiang.chien@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hi Howard,<br><br></div><div>I am doing some experiment to replace stlport with libc++ in the Android platform, which does not have libstdc++.  Although I can compile the libc++ library itself with clang, I can't build the world with clang at the moment.  Thus, I wish to make the C++98/03 headers compatible with g++, so that I can include them without problems.<br>


<br></div><div>Sincerely,<br></div><div>Logan<br></div></div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Dec 28, 2013 at 1:05 AM, Howard Hinnant <span dir="ltr"><<a href="mailto:howard.hinnant@gmail.com" target="_blank">howard.hinnant@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Logan,<br>
<br>
Could you comment on the motivation for using g++ + libc++.  I.e., why use libc++ instead of the libstdc++ that comes bundled with g++?<br>
<br>
Thanks,<br>
Howard<br>
<div><div><br>
On Dec 26, 2013, at 11:08 AM, Logan Chien <<a href="mailto:tzuhsiang.chien@gmail.com" target="_blank">tzuhsiang.chien@gmail.com</a>> wrote:<br>
<br>
> Ping.<br>
><br>
><br>
> On Fri, Dec 20, 2013 at 10:53 PM, Logan Chien <<a href="mailto:tzuhsiang.chien@gmail.com" target="_blank">tzuhsiang.chien@gmail.com</a>> wrote:<br>
> Ping.  Any further comments?<br>
><br>
> This patch tries to reduce the usage of the default function template arguments, which is not supported in pre-C++0x.  Without this change, we will get compilation error from g++ if we tries to include libc++ headers in pre-C++0x mode.<br>



><br>
> To remove the usage of default function template arguments, the patch moves the enable_if<> to return type or the function argument types.  This pattern is used in the other code of libc++ as well.<br>
><br>
> Please let me know if you have any comments.  Thanks.<br>
><br>
> Sincerely,<br>
> Logan<br>
><br>
</div></div>> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>