EricWF added a comment.

This patch is OK to land as-is.

Doing the cleanup separately makes sense.



================
Comment at: include/type_traits:3683
+
+#elif __has_feature(has_trivial_destructor) || (_GNUC_VER >= 403)
+
----------------
rsmith wrote:
> EricWF wrote:
> > We don't support anything before GCC 4.9, so you can replace the GCC guard 
> > with `|| defined(_LIBCPP_COMPILER_GCC)`
> Nice. I'll do this more broadly as a separate patch, if that's OK with you. 
> There's lots of support for older GCCs scattered around in this file and 
> elsewhere.
That sounds good to me.

I'm happy to take over the cleanup if you want.


================
Comment at: include/type_traits:3710
 
-#if 0
+#ifndef _LIBCPP_HAS_NO_VARIADICS
+
----------------
rsmith wrote:
> EricWF wrote:
> > We should use variadics in C++03 when Clang is the compiler.  I would write 
> > this check as `#if !defined(_LIBCPP_CXX03_LANG) || defined(__clang__)`
> Would it make more sense to change the definition of _LIBCPP_HAS_NO_VARIADICS 
> to do that globally? This same pattern is used in various places in libc++, 
> both in existing code in `<type_traits>`, in `<future>` (for `packaged_task` 
> / `async`), and in `<memory>` (for traits and `allocator::construct`). In 
> every case we're guarding use of variadics to define a template that is 
> specified as being variadic.
I'm trying to replace `_LIBCPP_HAS_NO_VARIADICS` with `_LIBCPP_CXX03_LANG`. 
Almost all usages of `_LIBCPP_HAS_NO_VARIADICS` guard more C++11 features than 
just variadic templates (like rvalue references) -- so simply changing the 
definition of `_LIBCPP_HAS_NO_VARIADICS` may be subtly wrong. 

I'll work on cleaning the macro up.








Repository:
  rCXX libc++

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D48292/new/

https://reviews.llvm.org/D48292



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to