1#ifndef NGEN_UTILITIES_TRAITS_HPP
2#define NGEN_UTILITIES_TRAITS_HPP
5#include <boost/variant.hpp>
31template<
typename T,
typename... Ts>
40template<
typename To,
typename... From>
49template<
typename From,
typename... To>
58template<
typename T,
typename... Ts>
61template<
typename... Ts>
83 template<
template<
typename>
class Container>
102 template<
typename S,
typename Tp>
disjunction< std::is_convertible< From, To >::value... > is_convertible_to_any
Checks that {From} is convertible to any types in {To}.
Definition traits.hpp:50
std::integral_constant< bool, B > bool_constant
Definition traits.hpp:15
bool_constant<!conjunction<!Bs... >::value > disjunction
Definition traits.hpp:23
disjunction< std::is_same< T, Ts >::value... > is_same_to_any
Checks that {T} is the same as at least one of {Ts}.
Definition traits.hpp:59
conjunction< std::is_same< Ts, T >::value... > all_is_same
Check that all types {Ts} are the same as {T}.
Definition traits.hpp:32
conjunction< std::is_convertible< From, To >::value... > all_is_convertible
Checks that all types {From} are convertible to {T}.
Definition traits.hpp:41
std::is_same< bool_pack< true, Bs... >, bool_pack< Bs..., true > > conjunction
Definition traits.hpp:19
Definition DomainLayer.hpp:9
boost::variant< Ts... > variant_scalar
Provides a type alias for a boost::variant containing the types of this type list.
Definition traits.hpp:71
boost::variant< Container< Ts >... > variant_container
Like variant_scalars, but for container types.
Definition traits.hpp:84
is_convertible_to_any< S, Ts... > is_supported
Semantically, we define that a type is supported if it's convertible to (not necessarily the same as)...
Definition traits.hpp:94
std::enable_if_t< is_supported< S >::value, Tp > enable_if_supports
Used for SFINAE.
Definition traits.hpp:103