<xstd/misc/type_traits.hpp>¶
#define XSTD_NO_UNIQUE_ADDRESS see below
namespace xstd {
template<class Tag = void>
struct empty_base_type {};
template<class Tag = void>
struct empty_member_type;
template<bool Condition, class Type, class Tag>
using conditional_data_member = conditional<Condition, Type, empty_member_type<Tag>>;
template<bool Condition, class Type, class Tag>
using conditional_data_member_t = conditional_t<Condition, Type, empty_member_type<Tag>>;
template<class T, template<class...> class Primary>
constexpr bool is_specialization_of_v = see below;
template<class T, template<class...> class Primary>
using is_specialization_of = bool_constant<is_specialization_of_v<T, Primary>>;
template<class H>
struct hash_algorithm_is_avalanching;
template<class H>
constexpr bool hash_algorithm_is_avalanching_v = hash_algorithm_is_avalanching<H>::value;
}
| Header | Declares |
|---|---|
<xstd/misc/type_traits/empty_base_type.hpp> |
empty_base_type |
<xstd/misc/type_traits/empty_member_type.hpp> |
empty_member_type |
<xstd/misc/type_traits/no_unique_address.hpp> |
XSTD_NO_UNIQUE_ADDRESS |
<xstd/misc/type_traits/conditional_data_member.hpp> |
conditional_data_member |
<xstd/misc/type_traits/hash_algorithm_is_avalanching.hpp> |
hash_algorithm_is_avalanching |
<xstd/misc/type_traits/is_specialization_of.hpp> |
is_specialization_of |
The umbrella's facilities compose into a member present only under a condition, and the trait recognises its absent branch.