20 #ifndef __utl_meta_invoke_h__ 21 #define __utl_meta_invoke_h__ 52 template <
typename _Tp>
55 #if defined (UTL_WORKAROUND_CWG_1558) 57 template <
typename... Ts>
60 template <
typename...>
67 template <
typename _Tp>
80 template <
typename Fn,
typename... Args>
87 template <
typename Fn,
typename... Args>
99 template <
template <
typename...>
class F>
101 template <
typename... Args>
106 template <
typename T,
template <T...>
class F>
109 template <
typename... Ts>
110 using apply = F<Ts::type::value...>;
118 template<
template<
typename...>
class F,
typename... T>
120 template<
template<
typename...>
class G,
typename = G<T...>>
122 template<
template<
typename...>
class>
125 using type = decltype(check<F>(0));
128 template<
typename F,
typename... T>
130 template<
typename G,
typename Ret =
invoke_t<G, T...>>
131 static Ret
check (
int);
132 template<
typename...>
138 decltype(check<F>(0))
148 template<
typename T,
template <T...>
class F, T... Is>
150 template<
typename TT,
template<TT...>
class G,
typename = G<Is...>>
152 template<
typename TT,
template<TT...>
class G>
155 using type = decltype(check<T, F>(0));
160 template<
template<
typename...>
class F,
typename... T>
165 template<
typename Q,
typename... T>
171 template <
typename T,
template<T...>
class F, T... Is>
182 template<
template<
typename...>
class F,
typename... Ts>
187 template<
typename T,
template<T...>
class F, T... Is>
208 template<
template<
class...>
class F,
class... Ts>
216 template <
typename T,
template<T...>
class F, T... Is>
233 template <
template <
typename...>
class F>
235 template <
typename... Args>
242 template <
typename T,
template <T...>
class F>
245 template <
typename... Ts>
247 defer_i<T, F, Ts::type::value...>
255 template <
template <
typename...>
class... Fns>
struct compose_f_ {};
258 template <
template <
typename...>
class Fn0,
259 template <
typename...>
class... Fns>
261 template <
typename... Args>
268 template <
template <
typename...>
class Fn0>
270 template <
typename ...Args>
278 template<
typename Fn0,
typename ...Fns>
280 template <
typename ...Args>
287 template<
typename Fn0>
289 template <
typename... Args>
307 template <
typename... Fns>
323 template <
template <
typename...>
class... Fns>
331 template<
typename Fn,
typename... Ts>
333 template<
typename... Us>
341 template<
typename Fn,
typename... Ts>
343 template<
typename... Us>
351 template <
typename T1>
353 template <
typename T2>
357 template <
typename T1>
359 template <
typename T2>
T1 first_of
Select the first type of a type sequence.
if_c< If::type::value, Args... > if_
Select one type or another depending on a compile-time Boolean type.
void void_t
void_t type alias
Integral constant operations and logical operations.
Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown.
STL's core language concepts.
not_< eval< same_< _T1, _T2 > >> not_same_
Implementation detail main forward header.