+Needed type traits vs clang type traits
+
+
+libc++ Needs |
+clang Has |
+
+
+
+is_union<T> |
+__is_union(T) |
+
+
+
+is_class<T> |
+__is_class(T) |
+
+
+
+is_enum<T> |
+__is_enum(T) |
+
+
+
+is_pod<T> |
+__is_pod(T) |
+
+
+
+has_virtual_destructor<T> |
+__has_virtual_destructor(T) |
+
+
+
+is_constructible<T, Args...> |
+__is_constructible(T, Args...) |
+
+
+
+is_default_constructible<T> |
+ |
+
+
+
+is_copy_constructible<T> |
+ |
+
+
+
+is_move_constructible<T> |
+ |
+
+
+
+is_assignable<T, U> |
+__is_assignable(T, U) |
+
+
+
+is_copy_assignable<T> |
+ |
+
+
+
+is_move_assignable<T> |
+ |
+
+
+
+is_destructible<T> |
+__is_destructible(T) |
+
+
+
+is_trivially_constructible<T, Args...> |
+__is_trivially_constructible(T, Args...) |
+
+
+
+is_trivially_default_constructible<T> |
+__has_trivial_constructor(T) |
+
+
+
+is_trivially_copy_constructible<T> |
+__has_trivial_copy(T) |
+
+
+
+is_trivially_move_constructible<T> |
+ |
+
+
+
+is_trivially_assignable<T, U> |
+__is_trivially_assignable(T, U) |
+
+
+
+is_trivially_copy_assignable<T> |
+__has_trivial_assign(T) |
+
+
+
+is_trivially_move_assignable<T> |
+ |
+
+
+
+is_trivially_destructible<T> |
+__has_trivial_destructor(T) |
+
+
+
+is_nothrow_constructible<T, Args...> |
+__is_nothrow_constructible(T, Args...) |
+
+
+
+is_nothrow_default_constructible<T> |
+__has_nothrow_constructor(T) |
+
+
+
+is_nothrow_copy_constructible<T> |
+__has_nothrow_copy(T) |
+
+
+
+is_nothrow_move_constructible<T> |
+ |
+
+
+
+is_nothrow_assignable<T, U> |
+__is_nothrow_assignable(T, U) |
+
+
+
+is_nothrow_copy_assignable<T> |
+__has_nothrow_assign(T) |
+
+
+
+is_nothrow_move_assignable<T> |
+ |
+
+
+
+is_nothrow_destructible<T> |
+__is_nothrow_destructible(T) |
+
+
+
+