8 template<
typename Alloc,
typename =
void>
11 template<
typename Alloc>
12 struct has_no_value_type<Alloc, std::void_t<typename Alloc::value_type>> : std::false_type {};
14 template<
typename Alloc>
18 template<
typename Alloc,
typename =
void>
24 template<
typename Alloc>
27 using type =
typename Alloc::size_type;
30 template<
typename Alloc>
34 template<
typename Void,
typename... Types>
37 template<
typename Alloc,
typename... Args>
38 struct has_construct<std::void_t<decltype(std::declval<Alloc&>().construct(std::declval<Args>()...))>, Alloc, Args...> : std::true_type {};
40 template<
typename Alloc,
typename... Args>
44 template<
typename Alloc,
typename Ptr,
typename =
void>
47 template<
typename Alloc,
typename Ptr>
48 struct has_destroy<Alloc, Ptr, std::void_t<decltype(std::declval<Alloc&>().destroy(std::declval<Ptr>()))>> : std::true_type {};
50 template<
typename Alloc,
typename Ptr>
54 template<
typename Alloc,
typename =
void>
57 template<
typename Alloc>
58 struct has_max_size<Alloc, std::void_t<decltype(std::declval<Alloc&>().max_size())>> : std::true_type {};
60 template<
typename Alloc>
64 template<
typename Alloc,
typename =
void>
67 template<
typename Alloc>
68 struct has_owns<Alloc, std::void_t<decltype(std::declval<Alloc&>().owns(std::declval<void*>()))>> : std::true_type {};
70 template<
typename Alloc>
76 template<
typename Alloc>
80 template<
typename Alloc>
81 constexpr
bool has_nothrow_deallocate_v = noexcept(std::declval<Alloc&>().deallocate(std::declval<void*>(), std::declval<size_t>()));
92 template<
typename Void,
typename... Types>
95 template<
typename Alloc,
typename... Args>
97 : std::bool_constant<noexcept(std::declval<Alloc&>().construct(std::declval<Args>()...))> {};
99 template<
typename Alloc,
typename... Args>
103 template<
typename Alloc,
typename Ptr,
typename =
void>
106 template<
typename Alloc,
typename Ptr>
108 : std::bool_constant<noexcept(std::declval<Alloc&>().destroy(std::declval<Ptr>()))> {};
110 template<
typename Alloc,
typename Ptr>
114 template<
typename Alloc,
typename =
void>
117 template<
typename Alloc>
119 : std::bool_constant<noexcept(std::declval<Alloc&>().max_size())> {};
121 template<
typename Alloc>
125 template<
typename Alloc,
typename =
void>
128 template<
typename Alloc>
130 : std::bool_constant<noexcept(std::declval<Alloc&>().owns(std::declval<void*>()))> {};
132 template<
typename Alloc>
Definition: fallback_fwd.h:23
constexpr bool has_nothrow_construct_v
Definition: meta.h:100
constexpr bool has_max_size_v
Definition: meta.h:61
constexpr bool has_construct_v
Definition: meta.h:41
constexpr bool has_nothrow_destroy_v
Definition: meta.h:111
constexpr bool has_no_value_type_v
Definition: meta.h:15
constexpr bool has_nothrow_equal_v
Definition: meta.h:85
constexpr bool has_nothrow_deallocate_v
Definition: meta.h:81
typename get_size_type< Alloc, void >::type get_size_type_t
Definition: meta.h:31
constexpr bool has_destroy_v
Definition: meta.h:51
constexpr bool has_nothrow_allocate_v
Definition: meta.h:77
constexpr bool has_owns_v
Definition: meta.h:71
constexpr bool has_nothrow_not_equal_v
Definition: meta.h:89
constexpr bool has_nothrow_owns_v
Definition: meta.h:133
constexpr bool has_nothrow_max_size_v
Definition: meta.h:122
typename Alloc::size_type type
Definition: meta.h:27
size_t type
Definition: meta.h:21