fennec
Loading...
Searching...
No Matches
type_traits.h File Reference

Type Traits More...

#include <fennec/lang/intrinsics.h>
#include <fennec/lang/type_transforms.h>
#include <fennec/lang/detail/_type_traits.h>

Go to the source code of this file.

Detailed Description

Author
Medusa Slockbower

Classes

struct  fennec::is_void< T >
 Check if T is of type void. More...
 
struct  fennec::is_null_pointer< T >
 Check if T is of type nullptr_t. More...
 
struct  fennec::is_bool< T >
 Check if T is of type bool. More...
 
struct  fennec::is_integral< T >
 Check if T is of an integral. More...
 
struct  fennec::is_floating_point< T >
 Check if T is of a floating point type. More...
 
struct  fennec::is_array< T >
 Check if T is of an array type. More...
 
struct  fennec::is_enum< T >
 Check if T is an enum. More...
 
struct  fennec::is_union< T >
 Check if T is a union. More...
 
struct  fennec::is_class< T >
 Check if T is a class. More...
 
struct  fennec::is_function< T >
 Check if T is a class. More...
 
struct  fennec::is_pointer< T >
 Check if T is of a pointer type. More...
 
struct  fennec::is_lvalue_reference< T >
 Check if T is of a floating point type. More...
 
struct  fennec::is_rvalue_reference< T >
 Check if T is of a floating point type. More...
 
struct  fennec::is_member_function_pointer< T >
 Check if T is a pointer to a member function. More...
 
struct  fennec::is_member_object_pointer< T >
 Check if T is a pointer to a member object. More...
 
struct  fennec::is_arithmetic< T >
 Check if T is an arithmetic type. More...
 
struct  fennec::is_fundamental< T >
 Check if T is a fundamental type, i.e. arithmetic, void, or nullptr_t. More...
 
struct  fennec::is_scalar< T >
 Check if T is an arithmetic type. More...
 
struct  fennec::is_object< T >
 Check if T is an object. More...
 
struct  fennec::is_compound< T >
 Check if T is a object compound type. More...
 
struct  fennec::is_reference< T >
 Check if T is of a floating point type. More...
 
struct  fennec::is_member_pointer< T >
 Check if T is a pointer to a member. More...
 
struct  fennec::is_trivial< T >
 Check if type T is trivial. More...
 
struct  fennec::is_trivially_copyable< T >
 Check if type T is trivially_copyable. More...
 
struct  fennec::is_standard_layout< T >
 Check if type T is standard_layout. More...
 
struct  fennec::has_unique_object_representations< T >
 Check if type T has unique object representations. More...
 
struct  fennec::is_empty< T >
 Check if type T is empty. More...
 
struct  fennec::is_polymorphic< T >
 Check if type T is polymorphic. More...
 
struct  fennec::is_abstract< T >
 Check if type T is abstract. More...
 
struct  fennec::is_complete< T >
 Check if type T is complete. More...
 
struct  fennec::is_final< T >
 Check if type T is final. More...
 
struct  fennec::is_aggregate< T >
 Check if type T is aggregate. More...
 
struct  fennec::is_signed< T >
 Check if T is of a signed integral. More...
 
struct  fennec::is_unsigned< T >
 Check if T is of an unsigned integral. More...
 
struct  fennec::is_same< T0, T1 >
 Check if the two types are identical. More...
 
struct  fennec::is_base_of< Base, Derived >
 Check if Derived has a base type of Base More...
 
struct  fennec::is_convertible< FromT, ToT >
 Check if type T0 can be converted T1 More...
 
struct  fennec::is_constructible< ClassT, ArgsT >
 Check if ClassT can be constructed with ArgsT, i.e. ClassT(ArgsT...). This may be read as "is `ClassT` constructible with `ArgsT`". More...
 
struct  fennec::is_trivially_constructible< ClassT >
 Check if ClassT is trivially constructible. More...
 
struct  fennec::is_default_constructible< ClassT >
 Check if ClassT is default constructible. More...
 
struct  fennec::is_copy_constructible< ClassT >
 Check if ClassT is copy constructible. More...
 
struct  fennec::is_move_constructible< ClassT >
 Check if ClassT is move constructible. More...
 
struct  fennec::is_assignable< ClassAT, ClassBT >
 Check if ClassT can be constructed with ArgsT, i.e. ClassT(ArgsT...). This may be read as "is `ClassT` constructible with `ArgsT`". More...
 
struct  fennec::is_copy_assignable< ClassT >
 Check if ClassT is copy assignable. More...
 
struct  fennec::is_move_assignable< ClassT >
 Check if ClassT is move assignable. More...
 
struct  fennec::is_destructible< ClassT >
 Check if ClassT is destructible. More...
 
struct  fennec::is_trivially_destructible< ClassT >
 Check if ClassT is trivially destructible. More...
 
struct  fennec::is_nothrow_destructible< ClassT >
 Check if ClassT is nothrow destructible. More...
 
struct  fennec::is_iterable< T >
 Check if type T is iterable. More...
 
struct  fennec::is_indexable< T >
 Check if type T is indexable. More...
 
struct  fennec::is_mappable< T >
 Check if type T is mappable. More...
 

Variables

template<typename T >
constexpr bool_t fennec::is_void_v = is_void<T>::value
 Shorthand for is_void<T>::value
 
template<typename T >
constexpr bool_t fennec::is_null_pointer_v = is_null_pointer<T>::value
 Shorthand for is_null_pointer<T>::value
 
template<typename T >
constexpr bool_t fennec::is_bool_v = is_bool<T>::value
 Shorthand for is_bool<T>::value
 
template<typename T >
constexpr bool_t fennec::is_integral_v = is_integral<T>::value
 Shorthand for is_integral<T>::value
 
template<typename T >
constexpr bool_t fennec::is_floating_point_v = is_floating_point<T> {}
 Shorthand for is_floating_point<T>::value
 
template<typename T >
constexpr bool_t fennec::is_array_v = is_array<T>::value
 Shorthand for is_array<T>::value
 
template<typename T >
constexpr size_t fennec::is_enum_v = is_enum<T>::value
 Check if T is a class.
 
template<typename T >
constexpr size_t fennec::is_union_v = is_union<T>::value
 Check if T is a class.
 
template<typename T >
constexpr size_t fennec::is_class_v = is_class<T>::value
 Check if T is a class.
 
template<typename T >
constexpr size_t fennec::is_function_v = is_function<T>::value
 Check if T is a class.
 
template<typename T >
constexpr bool_t fennec::is_pointer_v = is_pointer<T> {}
 Shorthand for is_pointer<T>::value
 
template<typename T >
constexpr bool_t fennec::is_lvalue_reference_v = is_lvalue_reference<T> {}
 Shorthand for is_floating_point<T>::value
 
template<typename T >
constexpr bool_t fennec::is_rvalue_reference_v = is_rvalue_reference<T> {}
 Shorthand for is_floating_point<T>::value
 
template<typename T >
constexpr bool_t fennec::is_member_function_pointer_v = is_member_function_pointer<T> {}
 Shorthand for is_member_function_pointer<T>::value
 
template<typename T >
constexpr bool_t fennec::is_member_object_pointer_v = is_member_object_pointer<T> {}
 Shorthand for is_member_object_pointer<T>::value
 
template<typename T >
constexpr bool_t fennec::is_arithmetic_v = is_arithmetic<T>::value
 Shorthand for is_arithmetic<T>::value
 
template<typename T >
constexpr bool_t fennec::is_fundamental_v = is_fundamental<T>::value
 Shorthand for is_fundamental<T>::value
 
template<typename T >
constexpr bool_t fennec::is_scalar_v = is_scalar<T>::value
 Shorthand for is_scalar<T>::value
 
template<typename T >
constexpr bool_t fennec::is_object_v = is_object<T>::value
 Shorthand for is_object<T>::value
 
template<typename T >
constexpr bool_t fennec::is_compound_v = is_compound<T>::value
 Shorthand for is_compound<T>::value
 
template<typename T >
constexpr bool_t fennec::is_reference_v = is_reference<T> {}
 Shorthand for is_floating_point<T>::value
 
template<typename T >
constexpr bool_t fennec::is_member_pointer_v = is_member_pointer<T> {}
 Shorthand for is_member_function_pointer<T>::value
 
template<typename T >
constexpr bool_t fennec::is_trivial_v = is_trivial<T>{}
 Shorthand for is_trivial<T>::value
 
template<typename T >
constexpr bool_t fennec::is_trivially_copyable_v = is_trivially_copyable<T>{}
 Shorthand for is_trivially_copyable<T>::value
 
template<typename T >
constexpr bool_t fennec::is_standard_layout_v = is_standard_layout<T>{}
 Shorthand for is_standard_layout<T>::value
 
template<typename T >
constexpr bool_t fennec::has_unique_object_representations_v = has_unique_object_representations<T>{}
 Shorthand for has_unique_object_representations<T>::value
 
template<typename T >
constexpr bool_t fennec::is_empty_v = is_empty<T>{}
 Shorthand for is_empty<T>::value
 
template<typename T >
constexpr bool_t fennec::is_polymorphic_v = is_polymorphic<T>{}
 Shorthand for is_polymorphic<T>::value
 
template<typename T >
constexpr bool_t fennec::is_abstract_v = is_abstract<T>{}
 Shorthand for is_abstract<T>::value
 
template<typename T >
constexpr bool_t fennec::is_complete_v = is_complete<T>{}
 Shorthand for is_complete<T>::value
 
template<typename T >
constexpr bool_t fennec::is_final_v = is_final<T>{}
 Shorthand for is_final<T>::value
 
template<typename T >
constexpr bool_t fennec::is_aggregate_v = is_aggregate<T>{}
 Shorthand for is_aggregate<T>::value
 
template<typename T >
constexpr bool_t fennec::is_signed_v = is_signed<T>::value
 Shorthand for is_signed<T>::value
 
template<typename T >
constexpr bool_t fennec::is_unsigned_v = is_unsigned<T>::value
 Shorthand for is_unsigned<T>::value
 
template<typename T0 , typename T1 >
constexpr bool_t fennec::is_same_v = is_same<T0, T1> {}
 Shorthand for is_same<T0, T1>::value
 
template<typename Base , typename Derived >
constexpr bool_t fennec::is_base_of_v = is_base_of<Base, Derived> {}
 Shorthand for is_base_of<T0, T1>::value
 
template<typename FromT , typename ToT >
constexpr bool_t fennec::is_convertible_v = is_convertible<FromT, ToT>{}
 Shorthand for can_convert<TypeT0, TypeT1>::value
 
template<typename ClassT , typename... ArgsT>
constexpr bool_t fennec::is_constructible_v = is_constructible<ClassT, ArgsT...>{}
 Shorthand for is_constructible<ClassT, ArgsT...>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_trivially_constructible_v = is_trivially_constructible<ClassT>{}
 Shorthand for is_trivially_constructible<ClassT, ArgsT...>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_default_constructible_v = is_default_constructible<ClassT>{}
 Shorthand for is_default_constructible<ClassT>::value
 
template<typename ClassT , typename... ArgsT>
constexpr bool_t fennec::is_copy_constructible_v = is_copy_constructible<ClassT>{}
 Shorthand for is_copy_constructible<ClassT>::value
 
template<typename ClassT , typename... ArgsT>
constexpr bool_t fennec::is_move_constructible_v = is_move_constructible<ClassT>{}
 Shorthand for is_copy_constructible<ClassT>::value
 
template<typename ClassT , typename... ArgsT>
constexpr bool_t fennec::is_assignable_v = is_assignable<ClassT, ArgsT...>{}
 Shorthand for is_constructible<ClassT, ArgsT...>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_copy_assignable_v = is_copy_assignable<ClassT>{}
 Shorthand for is_copy_assignable<ClassT>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_move_assignable_v = is_move_assignable<ClassT>{}
 Shorthand for is_move_assignable<ClassT>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_destructible_v = is_destructible<ClassT>{}
 Shorthand for is_destructible<ClassT, ArgsT...>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_trivially_destructible_v = is_trivially_destructible<ClassT>{}
 Shorthand for is_trivially_destructible<ClassT, ArgsT...>::value
 
template<typename ClassT >
constexpr bool_t fennec::is_nothrow_destructible_v = is_nothrow_destructible<ClassT>{}
 Shorthand for is_nothrow_destructible<ClassT, ArgsT...>::value
 
template<typename T >
constexpr bool_t fennec::is_iterable_v = is_iterable<T>{}
 Shorthand for is_iterable<TypeT0, TypeT1>::value
 
template<typename T >
constexpr bool_t fennec::is_indexable_v = is_indexable<T>{}
 Shorthand for is_indexable<TypeT0, TypeT1>::value
 
template<typename T >
constexpr bool_t fennec::is_mappable_v = is_mappable<T>{}
 Shorthand for is_mappable<TypeT0, TypeT1>::value
 

Variable Documentation

◆ is_void_v

template<typename T >
constexpr bool_t fennec::is_void_v = is_void<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_null_pointer_v

template<typename T >
constexpr bool_t fennec::is_null_pointer_v = is_null_pointer<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_bool_v

template<typename T >
constexpr bool_t fennec::is_bool_v = is_bool<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_integral_v

template<typename T >
constexpr bool_t fennec::is_integral_v = is_integral<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_floating_point_v

template<typename T >
constexpr bool_t fennec::is_floating_point_v = is_floating_point<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_array_v

template<typename T >
constexpr bool_t fennec::is_array_v = is_array<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_enum_v

template<typename T >
constexpr size_t fennec::is_enum_v = is_enum<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_union_v

template<typename T >
constexpr size_t fennec::is_union_v = is_union<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_class_v

template<typename T >
constexpr size_t fennec::is_class_v = is_class<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_function_v

template<typename T >
constexpr size_t fennec::is_function_v = is_function<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_pointer_v

template<typename T >
constexpr bool_t fennec::is_pointer_v = is_pointer<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_lvalue_reference_v

template<typename T >
constexpr bool_t fennec::is_lvalue_reference_v = is_lvalue_reference<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_rvalue_reference_v

template<typename T >
constexpr bool_t fennec::is_rvalue_reference_v = is_rvalue_reference<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_member_function_pointer_v

template<typename T >
constexpr bool_t fennec::is_member_function_pointer_v = is_member_function_pointer<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_member_object_pointer_v

template<typename T >
constexpr bool_t fennec::is_member_object_pointer_v = is_member_object_pointer<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_arithmetic_v

template<typename T >
constexpr bool_t fennec::is_arithmetic_v = is_arithmetic<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_fundamental_v

template<typename T >
constexpr bool_t fennec::is_fundamental_v = is_fundamental<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_scalar_v

template<typename T >
constexpr bool_t fennec::is_scalar_v = is_scalar<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_object_v

template<typename T >
constexpr bool_t fennec::is_object_v = is_object<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_compound_v

template<typename T >
constexpr bool_t fennec::is_compound_v = is_compound<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_reference_v

template<typename T >
constexpr bool_t fennec::is_reference_v = is_reference<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_member_pointer_v

template<typename T >
constexpr bool_t fennec::is_member_pointer_v = is_member_pointer<T> {}
constexpr
Template Parameters
Ttype to check

◆ is_trivial_v

template<typename T >
constexpr bool_t fennec::is_trivial_v = is_trivial<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_trivially_copyable_v

template<typename T >
constexpr bool_t fennec::is_trivially_copyable_v = is_trivially_copyable<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_standard_layout_v

template<typename T >
constexpr bool_t fennec::is_standard_layout_v = is_standard_layout<T>{}
constexpr
Template Parameters
Ttype to check

◆ has_unique_object_representations_v

template<typename T >
constexpr bool_t fennec::has_unique_object_representations_v = has_unique_object_representations<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_empty_v

template<typename T >
constexpr bool_t fennec::is_empty_v = is_empty<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_polymorphic_v

template<typename T >
constexpr bool_t fennec::is_polymorphic_v = is_polymorphic<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_abstract_v

template<typename T >
constexpr bool_t fennec::is_abstract_v = is_abstract<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_complete_v

template<typename T >
constexpr bool_t fennec::is_complete_v = is_complete<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_final_v

template<typename T >
constexpr bool_t fennec::is_final_v = is_final<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_aggregate_v

template<typename T >
constexpr bool_t fennec::is_aggregate_v = is_aggregate<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_signed_v

template<typename T >
constexpr bool_t fennec::is_signed_v = is_signed<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_unsigned_v

template<typename T >
constexpr bool_t fennec::is_unsigned_v = is_unsigned<T>::value
constexpr
Template Parameters
Ttype to check

◆ is_same_v

template<typename T0 , typename T1 >
constexpr bool_t fennec::is_same_v = is_same<T0, T1> {}
constexpr
Template Parameters
T0first type to check
T1second type to check

◆ is_base_of_v

template<typename Base , typename Derived >
constexpr bool_t fennec::is_base_of_v = is_base_of<Base, Derived> {}
constexpr
Template Parameters
Basebase type to check
Derivedderived type to check

◆ is_convertible_v

template<typename FromT , typename ToT >
constexpr bool_t fennec::is_convertible_v = is_convertible<FromT, ToT>{}
constexpr
Parameters
FromTFirst type
ToTSecond type

◆ is_iterable_v

template<typename T >
constexpr bool_t fennec::is_iterable_v = is_iterable<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_indexable_v

template<typename T >
constexpr bool_t fennec::is_indexable_v = is_indexable<T>{}
constexpr
Template Parameters
Ttype to check

◆ is_mappable_v

template<typename T >
constexpr bool_t fennec::is_mappable_v = is_mappable<T>{}
constexpr
Template Parameters
Ttype to check