Iros
 
Loading...
Searching...
No Matches
gather_signatures.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/meta/algorithm.h"
7#include "di/meta/core.h"
8#include "di/meta/language.h"
9#include "di/meta/util.h"
10
11namespace di::meta {
12namespace detail {
13 template<bool>
15 template<template<typename...> typename T, typename... Args>
16 using MetaApply = T<Args...>;
17 };
18
19 template<template<typename...> typename F, typename List>
20 struct MetaApply;
21
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...>> {};
25
26 template<typename Tag, typename Completions, template<typename...> typename Tup>
28
29 template<typename Tag, template<typename...> typename Tup>
30 struct GatherSignaturesHelper<Tag, List<>, Tup> : TypeConstant<List<>> {};
31
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> {};
34
35 template<typename Tag, concepts::CompletionSignature T, typename... Rest, template<typename...> typename Tup>
40}
41
42template<typename Tag, typename S, typename E, template<typename...> typename Tuple,
43 template<typename...> typename Variant>
47}
Definition tuple_forward_declaration.h:5
Definition variant_forward_declaration.h:6
Definition completion_signature.h:23
Definition core.h:114
Definition sender_in.h:10
Definition const_sentinel.h:8
Definition merge_interfaces.h:6
meta::Type< detail::MetaApply< Variant, meta::Type< detail::GatherSignaturesHelper< Tag, meta::AsList< meta::CompletionSignaturesOf< S, E > >, Tuple > > > > GatherSignatures
Definition gather_signatures.h:45
T::Type Type
Definition core.h:26
decltype(execution::get_completion_signatures(util::declval< Sender >(), util::declval< Env >())) CompletionSignaturesOf
Definition completion_signatures_of.h:12
Concat< List< T >, L > PushFront
Definition algorithm.h:83
Type< detail::AsListHelper< T > > AsList
Definition algorithm.h:48
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition core.h:5
Definition core.h:18
Definition gather_signatures.h:27
Definition gather_signatures.h:14
T< Args... > MetaApply
Definition gather_signatures.h:16
Definition gather_signatures.h:20