11 template <std::size_t... Idx>
12 constexpr auto reversed_index_sequence_impl(std::index_sequence<Idx...>
const&)
13 ->
decltype(std::index_sequence<
sizeof...(Idx) - 1U - Idx...>{});
17 template <std::
size_t N>
25 void test_implicitly_default_constructible_impl(T);
27 template <
class T,
class =
void>
28 struct is_implicitly_default_constructible_impl : std::false_type {};
31 struct is_implicitly_default_constructible_impl<
32 T, decltype(test_implicitly_default_constructible_impl<const T&>({}))> : std::true_type {};
38 :
_and<std::is_default_constructible<T>, is_implicitly_default_constructible_impl<T>> {};
49 template <
class,
class,
class =
void>
53 template <
class From,
class To>
58 template <
class From,
class To>
65 template <
class From,
class To>
70 static std::add_lvalue_reference_t<From> make_from();
75 static const bool value =
sizeof(test(is_implicitly_convertible::make_from())) ==
sizeof(yes);
79 template <
class From,
class To>
86 template <
class From,
class To>
88 using type = std::conditional_t<std::is_const_v<From>, std::add_const_t<To>, To>;
92 template <
class From,
class To>
98 template <
class From,
class To>
100 using type = std::conditional_t<std::is_volatile_v<From>, std::add_volatile_t<To>, To>;
104 template <
class From,
class To>
110 template <
class From,
class To>
116 template <
class From,
class To>
123 template <
class From,
class To>
125 using type = std::conditional_t<
126 std::is_rvalue_reference_v<From>,
127 std::add_rvalue_reference_t<To>,
129 std::is_lvalue_reference_v<From>,
130 std::add_lvalue_reference_t<To>,
138 template <
class From,
class To>
145 template <
class From,
class To>
152 std::remove_reference_t<From>,
153 std::remove_reference_t<To>
161 template <
class From,
class To>
167 template <
class From,
class To>
171 template <
class From,
class To>
175 template <
class From,
class To>
179 template <
class From,
class To>
183 template <
class From,
class To>
187 template <
class From,
class To>
191 template <
class From,
class To>
195 template <
class From,
class To>
199 template <
class From,
class To>
203 template <
class From,
class To>
Implementation details are here.
Definition: alternative.hpp:16
constexpr bool is_implicitly_convertible_v
A helper inline variable for is_implicitly_convertible.
Definition: type_traits.hpp:80
typename clone_reference< From, To >::type clone_reference_t
A helper alias template for clone_reference.
Definition: type_traits.hpp:196
decltype(reversed_index_sequence_impl(std::make_index_sequence< N >{})) make_reversed_index_sequence
make_reversed_index_sequence
Definition: type_traits.hpp:18
typename copy_cv< From, To >::type copy_cv_t
A helper alias template for copy_cv.
Definition: type_traits.hpp:184
typename copy_cvref< From, To >::type copy_cvref_t
A helper alias template for copy_cvref.
Definition: type_traits.hpp:200
constexpr bool is_explicitly_convertible_v
A helper inline variable for is_explicitly_convertible.
Definition: type_traits.hpp:59
typename copy_const< From, To >::type copy_const_t
A helper alias template for copy_const.
Definition: type_traits.hpp:168
constexpr bool is_implicitly_default_constructible_v
A helper inline variable for is_implicitly_default_constructible.
Definition: type_traits.hpp:42
typename clone_cv< From, To >::type clone_cv_t
A helper alias template for clone_cv.
Definition: type_traits.hpp:188
typename copy_volatile< From, To >::type copy_volatile_t
A helper alias template for copy_volatile.
Definition: type_traits.hpp:176
typename clone_const< From, To >::type clone_const_t
A helper alias template for clone_const.
Definition: type_traits.hpp:172
typename clone_volatile< From, To >::type clone_volatile_t
A helper alias template for clone_volatile.
Definition: type_traits.hpp:180
typename copy_reference< From, To >::type copy_reference_t
A helper alias template for copy_reference.
Definition: type_traits.hpp:192
typename clone_cvref< From, To >::type clone_cvref_t
A helper alias template for clone_cvref.
Definition: type_traits.hpp:204
std::conjunction< Bn... > _and
_and
Definition: stdfundamental.hpp:28
Clones the const qualifier.
Definition: type_traits.hpp:93
Clones cv qualifiers.
Definition: type_traits.hpp:117
Clones cv and reference qualifiers.
Definition: type_traits.hpp:162
Clones the reference qualifier.
Definition: type_traits.hpp:139
Clones the volatile qualifier.
Definition: type_traits.hpp:105
Copies the const qualifier.
Definition: type_traits.hpp:87
Copies cv qualifiers.
Definition: type_traits.hpp:111
Copies cv and reference qualifiers.
Definition: type_traits.hpp:146
Copies the reference qualifier.
Definition: type_traits.hpp:124
Copies the volatile qualifier.
Definition: type_traits.hpp:99
is_explicitly_convertible
Definition: type_traits.hpp:50
is_implicitly_convertible
Definition: type_traits.hpp:66
is_implicitly_default_constructible
Definition: type_traits.hpp:38