7template<
template<
typename...>
typename Fun,
typename... Args>
13 template<
template<
typename...>
typename,
typename...>
14 struct DeferHelper {};
16#pragma GCC diagnostic push
18#pragma GCC diagnostic ignored "-Wsubobject-linkage"
20 template<
template<
typename...>
typename Fun,
typename... Args>
21 requires(concepts::ValidInstantiation<Fun, Args...>)
22 struct DeferHelper<Fun, Args...> : TypeConstant<Fun<Args...>> {};
23#pragma GCC diagnostic pop
26template<
template<
typename...>
typename Fun,
typename... Args>
27using Defer = detail::DeferHelper<Fun, Args...>;
29template<
template<
typename...>
typename Fun>
31 template<
typename... Args>
46 template<
typename F,
typename T>
49 template<
typename F,
typename... Args>
54template<concepts::MetaInvocable F, concepts::TypeList T>
57template<concepts::MetaInvocable Fun>
59 template<concepts::TypeList List>
65 template<
typename... Rest>
71 template<
typename... Rest>
75template<concepts::MetaInvocable MetaFn>
77 template<
typename T,
typename U>
85 template<concepts::MetaInvocable F>
86 struct ComposeHelper<F> : F {};
88 template<concepts::MetaInvocable F, concepts::MetaInvocable G>
89 struct ComposeHelper<F, G> {
90 template<
typename... Args>
94 template<concepts::MetaInvocable F, concepts::MetaInvocable... Gs>
95 struct ComposeHelper<F, Gs...> : ComposeHelper<F, ComposeHelper<Gs...>> {};
98template<concepts::MetaInvocable... Funs>
99using Compose = detail::ComposeHelper<Funs...>;
102 template<
typename...>
105 template<concepts::MetaInvocable F>
106 struct ChainHelper<F> : F {};
108 template<concepts::MetaInvocable F, concepts::MetaInvocable G>
109 struct ChainHelper<F, G> {
110 template<
typename... Args>
115 struct ChainHelper<F, Gs...> : ChainHelper<F, ChainHelper<Gs...>> {};
119using Chain = detail::ChainHelper<Funs...>;
123 template<
typename... Args>
127template<concepts::MetaInvocable MetaFn>
129 template<
typename... Args>
Definition any_storable.h:9