Type Traits
-
Was kann man mit Type Traits machen? Nur sowas wie is_int usw. oder gibts da noch mehr?
-
-
Na schau dir mal std::advance an, da siehst du eine weitere Anwendung. Nämlich um gewisse Iteratoreeigenschaften zu definieren.
-
namespace std { namespace tr1 { template <class _T, _T _V> struct integral_constant; typedef integral_constant<bool, true> true_type; typedef integral_constant<bool, false> false_type; // Unary Type Traits template <class _T> struct is_void; template <class _T> struct is_integral; template <class _T> struct is_floating_point; template <class _T> struct is_array; template <class _T> struct is_pointer; template <class _T> struct is_reference; template <class _T> struct is_member_object_pointer; template <class _T> struct is_member_function_pointer; template <class _T> struct is_enum; template <class _T> struct is_union; template <class _T> struct is_class; template <class _T> struct is_function; template <class _T> struct is_arithmetic; template <class _T> struct is_fundamental; template <class _T> struct is_object; template <class _T> struct is_scalar; template <class _T> struct is_compound; template <class _T> struct is_member_pointer; template <class _T> struct is_const; template <class _T> struct is_volatile; template <class _T> struct is_pod; template <class _T> struct is_empty; template <class _T> struct is_polymorphic; template <class _T> struct is_abstract; template <class _T> struct has_trivial_constructor; template <class _T> struct has_trivial_copy; template <class _T> struct has_trivial_assign; template <class _T> struct has_trivial_destructor; template <class _T> struct has_nothrow_constructor; template <class _T> struct has_nothrow_copy; template <class _T> struct has_nothrow_assign; template <class _T> struct has_virtual_destructor; template <class _T> struct is_signed; template <class _T> struct is_unsigned; template <class _T> struct alignment_of; template <class _T> struct rank; template <class _T, unsigned _I = 0> struct extent; // Binary Type Traits template <class _T, class _U> struct is_same; template <class _From, class _To> struct is_convertible; template <class _From, class _To> struct is_base_of; // Transformation Type Traits template <class _T> struct remove_const; template <class _T> struct remove_volatile; template <class _T> struct remove_cv; template <class _T> struct add_const; template <class _T> struct add_volatile; template <class _T> struct add_cv; template <class _T> struct remove_reference; template <class _T> struct add_reference; template <class _T> struct remove_pointer; template <class _T> struct add_pointer; template <class _T> struct remove_extent; template <class _T> struct remove_all_extents; template <std::size_t _Len, std::size_t _Align> struct aligned_storage; } }:xmas1: :xmas2:
Edit: Peinlich, falsch formattiert
