diff --git a/www/index.html b/www/index.html index cc7d4cde..c249d1e2 100644 --- a/www/index.html +++ b/www/index.html @@ -158,6 +158,7 @@ diff --git a/www/type_traits_design.html b/www/type_traits_design.html new file mode 100644 index 00000000..2ae99b1e --- /dev/null +++ b/www/type_traits_design.html @@ -0,0 +1,236 @@ + + + + + + type traits intrinsic design + + + + + + + +
+ +

Type traits intrinsic design

+ + +

+This is a survey of the type traits intrinsics clang has, and those needed. +The names and definitions of several of the needed type traits has recently +changed. Please see: +N3142. +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Legend
clang supplies it and it is absolutely necessarysome_trait(T)
clang supplies it and it is usefulsome_trait(T)
clang supplies it and it is not neededsome_trait(T)
clang does not supply it and it is not needed
clang does not supply it and it is absolutely necessarysome_trait(T)
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Needed type traits vs clang type traits
libc++ Needsclang 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)
+
+ +
+ +