Freundlich's C++ toolkit
Classes | Typedefs
fcppt::type_traits Namespace Reference

Some additional type traits. More...


struct  is_base_of
 Like std::is_base_of, but only works on complete types. More...
struct  is_string
 Tells if a type is a string. More...
struct  is_string< std::basic_string< Ch, Traits, Alloc > >


template<typename F >
using function_result = typename fcppt::type_traits::detail::function_result< F >::type
 The return type of a function type. More...
template<typename Left , typename Right >
using implication = std::disjunction< std::negation< Left >, Right >
 The implication function: Left -> Right. More...
template<typename Dest , typename Conv , typename Integral >
using integral_cast = std::integral_constant< Dest, fcppt::type_traits::detail::integral_cast_value< Dest, Conv, Integral >::value >
 Does an integral cast on an integral constant. More...
template<typename Type >
using is_float_or_double = std::integral_constant< bool, std::is_same< Type, float >::value||std::is_same< Type, double >::value >
 Checks if a type is float or double. More...
template<typename Iterator , typename Category >
using is_iterator_of_category = fcppt::iterator::category_at_least< typename std::iterator_traits< Iterator >::iterator_category, Category >
 Checks if an iterator models a given category. More...
template<typename Type >
using is_raw_pointer = typename fcppt::type_traits::detail::is_raw_pointer< Type >::type
 Checks if a pointer is a raw pointer type. More...
template<typename Type >
using is_value = std::integral_constant< bool, !std::is_void< Type >::value &&!std::is_array< Type >::value &&!std::is_function< Type >::value &&!std::is_reference< Type >::value &&!std::is_const< Type >::value &&!std::is_volatile< Type >::value >
 Checks if the type behaves like a value type. More...
template<typename Type >
using numeric_max = std::integral_constant< Type, std::numeric_limits< Type >::max()>
 Metafunction to compute the maximum value of a type. More...
template<typename Type >
using remove_cv_ref = std::remove_cv< std::remove_reference_t< Type > >
 Removes references and cv qualifiers. More...
template<typename Type >
using remove_cv_ref_t = typename fcppt::type_traits::remove_cv_ref< Type >::type
 Removes references and cv qualifiers. Version without typename. More...
template<typename DestType , typename Src >
using safe_integral_cast = typename fcppt::type_traits::detail::safe_integral_cast< DestType, Src >::type
 Casts std::integral_constants and checks for truncation. More...
template<typename Type >
using to_bool = fcppt::type_traits::integral_cast< bool, fcppt::cast::static_cast_fun, Type >
 Casts a std::integral_constant to bool. More...
template<typename Container >
using value_type = typename Container::value_type
 The value type of a container. More...

Detailed Description

Some additional type traits.

Typedef Documentation

◆ function_result

template<typename F >
using fcppt::type_traits::function_result = typedef typename fcppt::type_traits::detail::function_result<F>::type

The return type of a function type.

Template Parameters
FMust be a function type.

◆ implication

template<typename Left , typename Right >
using fcppt::type_traits::implication = typedef std::disjunction<std::negation<Left>, Right>

The implication function: Left -> Right.

Calculates the implication of Left and Right. Equal to (not Left) or Right)

Template Parameters
LeftA boolean expression
RightA boolean expression

◆ integral_cast

template<typename Dest , typename Conv , typename Integral >
using fcppt::type_traits::integral_cast = typedef std::integral_constant< Dest, fcppt::type_traits::detail::integral_cast_value<Dest, Conv, Integral>::value>

Does an integral cast on an integral constant.

Casts Integral to an integral constant of type Dest. The cast is done using Conv from fcppt.casts.

Template Parameters
DestAn integral type to cast to
ConvA cast function from fcppt.casts
IntegralA std::integral_constant to cast from

◆ is_raw_pointer

template<typename Type >
using fcppt::type_traits::is_raw_pointer = typedef typename fcppt::type_traits::detail::is_raw_pointer<Type>::type

Checks if a pointer is a raw pointer type.

A raw pointer is a (cv qualified) pointer to char or to unsigned char. Both can be used to read and write bytes.

Template Parameters
TypeMust be a pointer type.

◆ numeric_max

template<typename Type >
using fcppt::type_traits::numeric_max = typedef std::integral_constant<Type, std::numeric_limits<Type>::max()>

Metafunction to compute the maximum value of a type.

Template Parameters
TypeMust be a type such that std::numeric_limits<Type>::max() is defined.

◆ safe_integral_cast

template<typename DestType , typename Src >
using fcppt::type_traits::safe_integral_cast = typedef typename fcppt::type_traits::detail::safe_integral_cast<DestType, Src>::type

Casts std::integral_constants and checks for truncation.

Template Parameters
DestTypeAn integral type.
SrcA std::integral_constant.

◆ to_bool

Casts a std::integral_constant to bool.

Template Parameters
TypeA std::integral_constant.