14 struct IndirectMetaApply {
15 template<
template<
typename...>
typename T,
typename... Args>
16 using MetaApply = T<Args...>;
19 template<
template<
typename...>
typename F,
typename List>
22 template<
template<
typename...>
typename F,
typename... Args>
23 struct MetaApply<F, meta::List<Args...>>
24 : TypeConstant<typename IndirectMetaApply<concepts::AlwaysTrue<Args...>>::template MetaApply<F, Args...>> {};
26 template<
typename Tag,
typename Completions,
template<
typename...>
typename Tup>
27 struct GatherSignaturesHelper;
29 template<
typename Tag,
template<
typename...>
typename Tup>
30 struct GatherSignaturesHelper<
Tag, List<>, Tup> : TypeConstant<List<>> {};
32 template<
typename Tag,
typename T,
typename... Rest,
template<
typename...>
typename Tup>
33 struct GatherSignaturesHelper<
Tag, List<T, Rest...>, Tup> : GatherSignaturesHelper<Tag, List<Rest...>, Tup> {};
35 template<
typename Tag, concepts::CompletionSignature T,
typename... Rest,
template<
typename...>
typename Tup>
36 requires(concepts::SameAs<meta::LanguageFunctionReturn<T>,
Tag>)
37 struct GatherSignaturesHelper<
Tag, List<T, Rest...>, Tup>
38 : TypeConstant<
PushFront<Type<GatherSignaturesHelper<
Tag, List<Rest...>, Tup>>,
39 meta::Type<MetaApply<Tup, meta::
AsList<T>>>>> {};
42template<
typename Tag,
typename S,
typename E,
template<
typename...>
typename Tuple,
43 template<
typename...>
typename Variant>
44requires(concepts::SenderIn<S, E>)
meta::MakeCompletionSignatures< Seq, Env, types::CompletionSignatures< SetValue()>, meta::TypeConstant< types::CompletionSignatures<> >::template Invoke, ErrorsWithStopped > Completions
Definition ignore_all.h:275
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Tuple(Types...) -> Tuple< Types... >