4.4.1
Freundlich's C++ toolkit
Loading...
Searching...
No Matches
Classes | Typedefs | Variables
fcppt::type_traits Namespace Reference

Some additional type traits. More...

Classes

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 > >
 

Typedefs

template<typename Left , typename Right >
using implication = std::disjunction< std::negation< Left >, Right >
 The implication function: Left -> Right.
 
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.
 
template<typename Type >
using is_integral_constant = typename fcppt::type_traits::detail::is_integral_constant< Type >::type
 Checks if a type is a std::integral_constant.
 
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.
 
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.
 
template<typename Type >
using is_value = std::integral_constant< bool, !std::is_void_v< Type > &&!std::is_array_v< Type > &&!std::is_function_v< Type > &&!std::is_reference_v< Type > &&!std::is_const_v< Type > &&!std::is_volatile_v< Type > >
 Checks if the type behaves like a value type.
 
template<typename Type >
using numeric_max = std::integral_constant< Type, std::numeric_limits< Type >::max()>
 Metafunction to compute the maximum value of a type.
 
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.
 
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.
 
template<typename Container >
using value_type = typename Container::value_type
 The value type of a container.
 

Variables

template<typename Left , typename Right >
constexpr bool implication_v = fcppt::type_traits::implication<Left, Right>::value
 The implication function: Left -> Right.
 
template<typename Iterator , typename Category >
constexpr bool is_iterator_of_category_v
 Checks if an iterator models a given category.
 

Detailed Description

Some additional type traits.

Typedef Documentation

◆ 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.

Variable Documentation

◆ implication_v

template<typename Left , typename Right >
constexpr bool fcppt::type_traits::implication_v = fcppt::type_traits::implication<Left, Right>::value
inlineconstexpr

The implication function: Left -> Right.

See also
fcppt::type_traits::implication