20 #ifndef _MINLIB_423a6056_5421_4f39_85b0_41c5bada4730_H_
21 #define _MINLIB_423a6056_5421_4f39_85b0_41c5bada4730_H_
32 template <
typename T>
struct tag {
using type =
T; };
36 template<
typename T,
typename F >
struct conditional<false,
T, F> {
using type = F; };
50 template<
typename A,
typename B>
54 template<
typename A,
typename B,
typename C,
typename... N>
59 template <
typename T>
T &&
move(
T &t) {
60 return static_cast<T &&
>(t); }
75 return static_cast<T &&
>(t);
79 return static_cast<T &&
>(t);
102 template<
typename T >
104 :
remove_cv<type_t<remove_reference<T>>> { };
112 :
tag<volatile T> {};
119 template <
typename T>
136 template <
typename T>
139 template <
typename R,
typename... Args>
142 template <
typename T>
145 template <
typename T,
size_t N>
148 template <
typename T>
151 template <
typename T>
159 template <
template <
class...>
typename Z,
typename,
typename... Ts>
162 template <
template <
class...>
typename Z,
typename... Ts>
165 template <
typename From,
typename To>
168 template <
class G,
class... Args>
169 using invoke_t = decltype(declval<G>()(declval<Args>()...));
171 template <
class Sig,
class =
void>
173 template <
class G,
class... Args>
178 template <
template <
typename...>
typename Z,
typename... Ts>
182 template <
typename From,
typename To>
187 template <
bool,
class =
void>
193 template <
bool b,
class T =
void>
210 template <
class A,
class B>
216 template<
typename TBase,
typename TDerived>
222 bool operator()(
const T& a,
const T& b)
const noexcept {
return a && b; }
227 bool operator()(
const T& a,
const T& b)
const noexcept {
return a || b; }
235 template <
size_t VAL,
size_t X = 1>
239 static constexpr
size_t value = type::value;
decltype(nullptr) nullptr_t
Definition: mn_functional.hpp:29
decltype(declval< G >()(declval< Args >()...)) invoke_t
Definition: mn_functional.hpp:169
decltype(To{declval< From >()}) try_convert
Definition: mn_functional.hpp:166
Definition: mn_functional.hpp:172
struct mn::memory::detail::ptr_difference T
Definition: mn_atomic_singleton.hpp:38
struct mn::memory::detail::ptr_difference type
Definition: mn_allocator_typetraits.hpp:25
typename remove_reference< T >::type & type
Definition: mn_functional.hpp:121
type_t< res_of< Sig > > res_of_t
Definition: mn_functional.hpp:204
type_t< remove_reference< T > > remove_reference_t
Definition: mn_functional.hpp:71
F type
Definition: mn_functional.hpp:36
T type
Definition: mn_functional.hpp:35
type_t< enable_if< b, T > > enable_if_t
Definition: mn_functional.hpp:194
type_t< decay< T > > decay_t
Definition: mn_functional.hpp:152
typename remove_reference< T >::type * type
Definition: mn_functional.hpp:125
signed long intmax_t
Definition: mn_def.hpp:51
typename make_void< ts ... >::type void_t
Definition: mn_void.hpp:65
const volatile typename remove_reference< T >::type type
Definition: mn_functional.hpp:116
void move(const T *src, const T *last, T *dest)
Definition: mn_algorithm.hpp:100
T && forward(remove_reference_t< T > &t)
Definition: mn_functional.hpp:74
typename Tag::type type_t
Definition: mn_functional.hpp:33
Definition: mn_functional.hpp:115
Definition: mn_functional.hpp:124
Definition: mn_functional.hpp:121
Definition: mn_functional.hpp:41
Definition: mn_functional.hpp:35
Definition: mn_functional.hpp:188
Definition: mn_functional.hpp:108
Definition: mn_functional.hpp:130
Definition: mn_functional.hpp:134
Definition: mn_functional.hpp:112
Definition: mn_functional.hpp:52
Definition: mn_functional.hpp:48
Definition: mn_functional.hpp:44
Definition: mn_functional.hpp:143
Definition: mn_functional.hpp:137
Definition: mn_functional.hpp:149
Calculates the Nth factorial value.
Definition: mn_functional.hpp:247
static constexpr size_t value
Definition: mn_functional.hpp:248
Calculates the Nth Fibonacci value.
Definition: mn_functional.hpp:263
static constexpr size_t value
Definition: mn_functional.hpp:264
Definition: mn_functional.hpp:160
Definition: mn_functional.hpp:217
Definition: mn_functional.hpp:183
Definition: mn_functional.hpp:211
Definition: mn_functional.hpp:221
bool operator()(const T &a, const T &b) const noexcept
Definition: mn_functional.hpp:222
Definition: mn_functional.hpp:231
bool operator()(const T &a) const noexcept
Definition: mn_functional.hpp:232
Definition: mn_functional.hpp:226
bool operator()(const T &a, const T &b) const noexcept
Definition: mn_functional.hpp:227
Definition: mn_functional.hpp:84
Definition: mn_functional.hpp:100
Definition: mn_functional.hpp:104
Definition: mn_functional.hpp:64
Definition: mn_functional.hpp:92
Definition: mn_functional.hpp:236
typename mn::conditional<((X *X) > VAL), mn::integral_constant< intmax_t, X - 1 >, mn::sqrt< VAL, X+1 > >::type type
Definition: mn_functional.hpp:238
static constexpr size_t value
Definition: mn_functional.hpp:239
Definition: mn_functional.hpp:32
T type
Definition: mn_functional.hpp:32