vSMC
vSMC: Scalable Monte Carlo
Modules | Classes | Functions
C++11 style type traits

C++11 style type traits. More...

Modules

 Arrays
 Arrays.
 
 Composite type categories
 Composite type categories.
 
 Const-volatility specifiers
 Const-volatility specifiers.
 
 Helper classes
 Helper classes.
 
 Miscellaneous transformations
 Miscellaneous transformations.
 
 Pointers
 Pointers.
 
 Primary type categories
 Primary type categories.
 
 Property queries
 Property queries.
 
 References
 References.
 
 Sign modifiers
 Sign modifiers.
 
 Supported operations
 Supported operations.
 
 Type properties
 Type properties.
 
 Type relations
 Type relations.
 
 Utilities
 Utilities.
 

Classes

struct  vsmc::cxx11::add_const< T >
 
struct  vsmc::cxx11::add_cv< T >
 
struct  vsmc::cxx11::add_lvalue_reference< T >
 
struct  vsmc::cxx11::add_pointer< T >
 
struct  vsmc::cxx11::add_rvalue_reference< T >
 
struct  vsmc::cxx11::add_volatile< T >
 
struct  vsmc::cxx11::aligned_storage< typename >
 
struct  vsmc::cxx11::aligned_union< typename >
 
struct  vsmc::cxx11::alignment_of< typename >
 
struct  vsmc::cxx11::common_type< typename >
 
struct  vsmc::cxx11::conditional< bool, typename, F >
 
struct  vsmc::cxx11::decay< T >
 
struct  vsmc::cxx11::enable_if< bool, typename >
 
struct  vsmc::cxx11::extent< typename, unsigned >
 
struct  vsmc::cxx11::has_virtual_destructor< typename >
 
struct  vsmc::cxx11::integral_constant< T, v >
 
struct  vsmc::cxx11::is_abstract< T >
 
struct  vsmc::cxx11::is_arithmetic< T >
 
struct  vsmc::cxx11::is_array< typename >
 
struct  vsmc::cxx11::is_assignable< typename >
 
struct  vsmc::cxx11::is_base_of< B, D >
 
struct  vsmc::cxx11::is_class< T >
 
struct  vsmc::cxx11::is_compound< T >
 
struct  vsmc::cxx11::is_const< typename >
 
struct  vsmc::cxx11::is_constructible< typename >
 
struct  vsmc::cxx11::is_convertible< T1, T2 >
 
struct  vsmc::cxx11::is_copy_assignable< typename >
 
struct  vsmc::cxx11::is_copy_constructible< typename >
 
struct  vsmc::cxx11::is_default_constructible< typename >
 
struct  vsmc::cxx11::is_destructible< typename >
 
struct  vsmc::cxx11::is_empty< T >
 
struct  vsmc::cxx11::is_enum< T >
 
struct  vsmc::cxx11::is_floating_point< T >
 
struct  vsmc::cxx11::is_function< T >
 
struct  vsmc::cxx11::is_fundamental< T >
 
struct  vsmc::cxx11::is_integral< T >
 
struct  vsmc::cxx11::is_literal_type< T >
 
struct  vsmc::cxx11::is_lvalue_reference< typename >
 
struct  vsmc::cxx11::is_member_function_pointer< T >
 
struct  vsmc::cxx11::is_member_object_pointer< T >
 
struct  vsmc::cxx11::is_member_pointer< T >
 
struct  vsmc::cxx11::is_move_assignable< typename >
 
struct  vsmc::cxx11::is_move_constructible< typename >
 
struct  vsmc::cxx11::is_nothrow_assignable< typename >
 
struct  vsmc::cxx11::is_nothrow_constructible< typename >
 
struct  vsmc::cxx11::is_nothrow_copy_assignable< typename >
 
struct  vsmc::cxx11::is_nothrow_copy_constructible< typename >
 
struct  vsmc::cxx11::is_nothrow_default_constructible< typename >
 
struct  vsmc::cxx11::is_nothrow_destructible< typename >
 
struct  vsmc::cxx11::is_nothrow_move_assignable< typename >
 
struct  vsmc::cxx11::is_nothrow_move_constructible< typename >
 
struct  vsmc::cxx11::is_null_pointer< T >
 
struct  vsmc::cxx11::is_object< T >
 
struct  vsmc::cxx11::is_pod< typename >
 
struct  vsmc::cxx11::is_pointer< T >
 
struct  vsmc::cxx11::is_polymorphic< T >
 
struct  vsmc::cxx11::is_reference< T >
 
struct  vsmc::cxx11::is_rvalue_reference< typename >
 
struct  vsmc::cxx11::is_same< typename, typename >
 
struct  vsmc::cxx11::is_scalar< T >
 
struct  vsmc::cxx11::is_signed< T >
 
struct  vsmc::cxx11::is_standard_layout< typename >
 
struct  vsmc::cxx11::is_trivial< typename >
 
struct  vsmc::cxx11::is_trivially_assignable< typename >
 
struct  vsmc::cxx11::is_trivially_constructible< typename >
 
struct  vsmc::cxx11::is_trivially_copy_assignable< typename >
 
struct  vsmc::cxx11::is_trivially_copy_constructible< typename >
 
struct  vsmc::cxx11::is_trivially_copyable< typename >
 
struct  vsmc::cxx11::is_trivially_default_constructible< typename >
 
struct  vsmc::cxx11::is_trivially_destructible< typename >
 
struct  vsmc::cxx11::is_trivially_move_assignable< typename >
 
struct  vsmc::cxx11::is_trivially_move_constructible< typename >
 
struct  vsmc::cxx11::is_union< T >
 
struct  vsmc::cxx11::is_unsigned< T >
 
struct  vsmc::cxx11::is_void< T >
 
struct  vsmc::cxx11::is_volatile< typename >
 
struct  vsmc::cxx11::make_signed< T >
 
struct  vsmc::cxx11::make_unsigned< T >
 
struct  vsmc::cxx11::rank< typename >
 
struct  vsmc::cxx11::remove_all_extents< T >
 
struct  vsmc::cxx11::remove_const< T >
 
struct  vsmc::cxx11::remove_cv< T >
 
struct  vsmc::cxx11::remove_extent< T >
 
struct  vsmc::cxx11::remove_pointer< T >
 
struct  vsmc::cxx11::remove_reference< T >
 
struct  vsmc::cxx11::remove_volatile< T >
 
struct  vsmc::cxx11::result_of< typename >
 
struct  vsmc::cxx11::underlying_type< typename >
 

Functions

template<typename T >
add_rvalue_reference< T >::type vsmc::cxx11::declval () noexcept
 

Detailed Description

C++11 style type traits.

Most of C++11/14 type traits are defined, except those require compiler sepcific funtionalities.

Bug:
vsmc::cxx11::is_union is not correctly implemented. This type traits need compiler support to be implemented. The current behavior is that is_union<T> derives from vsmc::cxx11::false_type for any T. In addition, is_class<T> derives vsmc::cxx11::true_type if the template parameter type is a union, while it should derive from vsmc::cxx11::false_type
Todo:
The following traits are declared but not implemented yet
template <typename> struct is_trivial;
template <typename> struct is_trivially_copyable;
template <typename> struct is_standard_layout;
template <typename> struct is_pod;
template <typename> struct is_literal_type;
template <typename> struct is_constructible;
template <typename> struct is_trivially_constructible;
template <typename> struct is_nothrow_constructible;
template <typename> struct is_default_constructible;
template <typename> struct is_trivially_default_constructible;
template <typename> struct is_nothrow_default_constructible;
template <typename> struct is_copy_constructible;
template <typename> struct is_trivially_copy_constructible;
template <typename> struct is_nothrow_copy_constructible;
template <typename> struct is_move_constructible;
template <typename> struct is_trivially_move_constructible;
template <typename> struct is_nothrow_move_constructible;
template <typename> struct is_assignable;
template <typename> struct is_trivially_assignable;
template <typename> struct is_nothrow_assignable;
template <typename> struct is_copy_assignable;
template <typename> struct is_trivially_copy_assignable;
template <typename> struct is_nothrow_copy_assignable;
template <typename> struct is_move_assignable;
template <typename> struct is_trivially_move_assignable;
template <typename> struct is_nothrow_move_assignable;
template <typename> struct is_destructible;
template <typename> struct is_trivially_destructible;
template <typename> struct is_nothrow_destructible;
template <typename> struct has_virtual_destructor;
template <typename> struct alignment_of;
template <typename> struct aligned_storage;
template <typename> struct aligned_union;
template <typename> struct common_type;
template <typename> struct underlying_type;
template <typename> struct result_of;

Function Documentation

template<typename T >
add_rvalue_reference<T>::type vsmc::cxx11::declval ( )
noexcept