20 #ifndef META_DISABLE_DEPRECATED_WARNINGS
21 #ifdef __cpp_attribute_deprecated
22 #define META_DEPRECATED(MSG) [[deprecated(MSG)]]
24 #if defined(__clang__) || defined(__GNUC__)
25 #define META_DEPRECATED(MSG) __attribute__((deprecated(MSG)))
26 #elif defined(_MSC_VER)
27 #define META_DEPRECATED(MSG) __declspec(deprecated(MSG))
29 #define META_DEPRECATED(MSG)
33 #define META_DEPRECATED(MSG)
40 #ifdef __cpp_lib_integer_sequence
41 using std::integer_sequence;
43 template <
typename T, T...>
44 struct integer_sequence;
47 template <
typename... Ts>
53 template <
template <
typename...>
class>
56 template <
typename T,
template <T...>
class F>
59 template <
typename... Fs>
62 template <
template <
typename...>
class C,
typename... Ts>
65 template <
typename T,
template <T...>
class C, T... Is>
70 template <
typename F,
typename List>
defer< compose, Fns... > compose
_t< extension::apply< C, List >> apply
Applies the Callable C using the types in the type list List as arguments.