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_default_constructible<T> |
|
is_copy_constructible<T> |
|
is_move_constructible<T> |
|
is_assignable<T, U> |
|
is_copy_assignable<T> |
|
is_move_assignable<T> |
|
is_destructible<T> |
|
is_trivially_constructible<T, Args...> |
__is_trivially_constructible(T, U) |
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_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_copy_assignable<T> |
__has_nothrow_assign(T) |
is_nothrow_move_assignable<T> |
|
is_nothrow_destructible<T> |
|
is_trivial<T> |
__is_trivial(T) |
is_trivially_copyable<T> |
__is_trivially_copyable(T) |
is_standard_layout<T> |
__is_standard_layout(T) |
is_literal_type<T> |
__is_literal_type(T) |
is_convertible<T, U> |
__is_convertible_to(T, U) |
is_base_of<T, U> |
__is_base_of(T, U) |
underlying_type<T> |
__underlying_type(T) |
is_polymorphic<T> |
__is_polymorphic(T) |
is_empty<T> |
__is_empty(T) |
is_abstract<T> |
__is_abstract(T) |