C++ Utilities  4.9.1
Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities
Classes | Typedefs
Traits Namespace Reference

Contains traits for conveniently exploiting SFINAE. More...

Classes

struct  All
 
struct  All< Head, Tail... >
 
struct  Any
 
struct  Any< Head, Tail... >
 
struct  Bool
 
struct  IsCString
 
struct  IsSpecializationOf
 
struct  IsSpecializationOf< Template< Args... >, Template >
 
struct  IsString
 

Typedefs

template<typename If , typename Then , typename Else >
using Conditional = typename std::conditional< If::value, Then, Else >::type
 
template<typename T >
using Not = Bool<!T::value >
 
template<typename... Condition>
using EnableIf = typename std::enable_if< All< Condition... >::value, Detail::Enabler >::type
 
template<typename... Condition>
using DisableIf = typename std::enable_if<!All< Condition... >::value, Detail::Enabler >::type
 
template<typename... Condition>
using EnableIfAny = typename std::enable_if< Any< Condition... >::value, Detail::Enabler >::type
 
template<typename... Condition>
using DisableIfAny = typename std::enable_if<!Any< Condition... >::value, Detail::Enabler >::type
 
template<typename T >
using IsIteratable = decltype(Detail::isIteratableImpl< T >(0))
 

Detailed Description

Contains traits for conveniently exploiting SFINAE.

Typedef Documentation

◆ Conditional

template<typename If , typename Then , typename Else >
using Traits::Conditional = typedef typename std::conditional<If::value, Then, Else>::type

Definition at line 16 of file traits.h.

◆ DisableIf

template<typename... Condition>
using Traits::DisableIf = typedef typename std::enable_if<!All<Condition...>::value, Detail::Enabler>::type

Definition at line 34 of file traits.h.

◆ DisableIfAny

template<typename... Condition>
using Traits::DisableIfAny = typedef typename std::enable_if<!Any<Condition...>::value, Detail::Enabler>::type

Definition at line 37 of file traits.h.

◆ EnableIf

template<typename... Condition>
using Traits::EnableIf = typedef typename std::enable_if<All<Condition...>::value, Detail::Enabler>::type

Definition at line 33 of file traits.h.

◆ EnableIfAny

template<typename... Condition>
using Traits::EnableIfAny = typedef typename std::enable_if<Any<Condition...>::value, Detail::Enabler>::type

Definition at line 36 of file traits.h.

◆ IsIteratable

template<typename T >
using Traits::IsIteratable = typedef decltype(Detail::isIteratableImpl<T>(0))

Definition at line 71 of file traits.h.

◆ Not

template<typename T >
using Traits::Not = typedef Bool<!T::value>

Definition at line 21 of file traits.h.