mn_typetraits.hpp File Reference
#include "mn_config.hpp"
#include "mn_def.hpp"

Go to the source code of this file.

Classes

struct  mn::type_traits< T >
 
struct  mn::type_traits< T & >
 
struct  mn::type_traits< const T >
 
struct  mn::type_traits< const T & >
 
struct  mn::type_traits< volatile T & >
 
struct  mn::type_traits< const volatile T & >
 
struct  mn::type_traits< T * >
 
struct  mn::type_traits< T[N]>
 
struct  mn::type_traits< const T[N]>
 
struct  mn::integral_constant< T, v >
 
struct  mn::is_const< typename >
 
struct  mn::is_const< T const >
 
struct  mn::is_volatile< typename >
 is_volatile More...
 
struct  mn::is_volatile< T volatile >
 
struct  mn::is_empty< T >
 is_empty More...
 
struct  mn::is_enum< T >
 
struct  mn::is_union< T >
 
struct  mn::is_class< T >
 
struct  mn::is_function< typename >
 
struct  mn::is_function< T(Args...)>
 
struct  mn::is_function< T(Args...) & >
 
struct  mn::is_function< T(Args...) && >
 
struct  mn::is_function< T(Args......)>
 
struct  mn::is_function< T(Args......) & >
 
struct  mn::is_function< T(Args......) && >
 
struct  mn::is_function< T(Args...) const >
 
struct  mn::is_function< T(Args...) const & >
 
struct  mn::is_function< T(Args...) const && >
 
struct  mn::is_function< T(Args......) const >
 
struct  mn::is_function< T(Args......) const & >
 
struct  mn::is_function< T(Args......) const && >
 
struct  mn::is_function< T(Args...) volatile >
 
struct  mn::is_function< T(Args...) volatile & >
 
struct  mn::is_function< T(Args...) volatile && >
 
struct  mn::is_function< T(Args......) volatile >
 
struct  mn::is_function< T(Args......) volatile & >
 
struct  mn::is_function< T(Args......) volatile && >
 
struct  mn::is_function< T(Args...) const volatile >
 
struct  mn::is_function< T(Args...) const volatile & >
 
struct  mn::is_function< T(Args...) const volatile && >
 
struct  mn::is_function< T(Args......) const volatile >
 
struct  mn::is_function< T(Args......) const volatile & >
 
struct  mn::is_function< T(Args......) const volatile && >
 
struct  mn::is_abstract< T >
 
struct  mn::is_polymorphic< T >
 
struct  mn::is_literal_type< T >
 
struct  mn::is_pod< T >
 
struct  mn::is_trivial< T >
 is_trivial More...
 
struct  mn::is_trivially_copyable< T >
 
struct  mn::is_standard_layout< T >
 is_standard_layout More...
 
struct  mn::is_bind_expression< T >
 
struct  mn::is_placeholder< T >
 
struct  mn::is_integral< T >
 
struct  mn::is_integral< const T >
 
struct  mn::is_integral< volatile T >
 
struct  mn::is_integral< const volatile T >
 
struct  mn::is_rational< T >
 
struct  mn::is_rational< const T >
 
struct  mn::is_rational< volatile T >
 
struct  mn::is_rational< const volatile T >
 
struct  mn::is_void< T >
 
struct  mn::is_void< const T >
 
struct  mn::is_void< volatile T >
 
struct  mn::is_void< const volatile T >
 
struct  mn::is_floating_point< T >
 
struct  mn::is_floating_point< float >
 
struct  mn::is_floating_point< double >
 
struct  mn::is_floating_point< long double >
 
struct  mn::is_floating_point< const T >
 
struct  mn::is_floating_point< volatile T >
 
struct  mn::is_floating_point< const volatile T >
 
struct  mn::is_lvalue_reference< typename >
 is_lvalue_reference More...
 
struct  mn::is_lvalue_reference< T & >
 
struct  mn::is_rvalue_reference< typename >
 is_rvalue_reference More...
 
struct  mn::is_rvalue_reference< T && >
 
struct  mn::is_pointer< T >
 
struct  mn::is_pointer< T * >
 
struct  mn::is_fundamental< T >
 
struct  mn::has_trivial_constructor< T >
 
struct  mn::has_trivial_copy< T >
 
struct  mn::has_trivial_assign< T >
 
struct  mn::has_trivial_destructor< T >
 
struct  mn::is_reference< T >
 
struct  mn::is_arithmetic< T >
 is_arithmetic More...
 
struct  mn::is_object< T >
 is_object More...
 
struct  mn::is_signed< T >
 is_signed More...
 
struct  mn::is_signed< char >
 
struct  mn::is_signed< signed char >
 
struct  mn::is_signed< short >
 
struct  mn::is_signed< int >
 
struct  mn::is_signed< long >
 
struct  mn::is_signed< long long >
 
struct  mn::is_signed< float >
 
struct  mn::is_signed< double >
 
struct  mn::is_signed< long double >
 
struct  mn::is_signed< const T >
 
struct  mn::is_signed< volatile T >
 
struct  mn::is_signed< const volatile T >
 
struct  mn::is_unsigned< T >
 is_unsigned More...
 
struct  mn::is_unsigned< bool >
 
struct  mn::is_unsigned< char >
 
struct  mn::is_unsigned< unsigned char >
 
struct  mn::is_unsigned< unsigned short >
 
struct  mn::is_unsigned< unsigned int >
 
struct  mn::is_unsigned< unsigned long >
 
struct  mn::is_unsigned< unsigned long long >
 
struct  mn::is_unsigned< const T >
 
struct  mn::is_unsigned< volatile T >
 
struct  mn::is_unsigned< const volatile T >
 
struct  mn::is_compound< T >
 is_compound More...
 

Namespaces

 mn
 

Macros

#define MN_INTEGRAL(T)
 
#define MN_RATIONAL(T)
 
#define MN_VOIDTYPE(T)
 

Typedefs

using mn::true_type = integral_constant< bool, true >
 
using mn::false_type = integral_constant< bool, false >
 

Class Documentation

◆ mn::type_traits

struct mn::type_traits

template<typename T>
struct mn::type_traits< T >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< T & >

struct mn::type_traits< T & >

template<typename T>
struct mn::type_traits< T & >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< const T >

struct mn::type_traits< const T >

template<typename T>
struct mn::type_traits< const T >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< const T & >

struct mn::type_traits< const T & >

template<typename T>
struct mn::type_traits< const T & >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< volatile T & >

struct mn::type_traits< volatile T & >

template<typename T>
struct mn::type_traits< volatile T & >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< const volatile T & >

struct mn::type_traits< const volatile T & >

template<typename T>
struct mn::type_traits< const volatile T & >

Class Members
typedef const T * const_pointer
typedef const T & const_reference
typedef const T const_type
typedef T * pointer
typedef T & reference
typedef T value_type

◆ mn::type_traits< T * >

struct mn::type_traits< T * >

template<typename T>
struct mn::type_traits< T * >

Class Members
typedef const T * const_pointer
typedef const T *& const_reference
typedef const T * const_type
typedef T * pointer
typedef T *& reference
typedef T * value_type

Macro Definition Documentation

◆ MN_INTEGRAL

#define MN_INTEGRAL (   T)
Value:
template<> \
struct is_integral<T> : public integral_constant<bool, true> { };

◆ MN_RATIONAL

#define MN_RATIONAL (   T)
Value:
template<> \
struct is_rational<T> : public integral_constant<bool, true> { };

◆ MN_VOIDTYPE

#define MN_VOIDTYPE (   T)
Value:
template<> \
struct is_void<T> : public integral_constant<bool, true> { };