di 0.1.0
Loading...
Searching...
No Matches
receiver_of.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace di::concepts {
8namespace detail {
9 template<typename Signature, typename T>
10 concept ValidCompletionFor = requires(Signature* signature) {
11 []<typename Ret, typename... Args>(Ret (*)(Args...))
12 requires concepts::TagInvocable<Ret, meta::RemoveCVRef<T>, Args...>
13 {}(signature);
14 };
15
16 template<typename T, typename L>
17 constexpr inline bool ReceiverOfHelper = false;
18
19 template<typename T, typename... Types>
20 constexpr inline bool ReceiverOfHelper<T, types::CompletionSignatures<Types...>> =
21 (ValidCompletionFor<Types, T> && ...);
22}
23
24template<class T, class Completions>
25concept ReceiverOf = Receiver<T> && detail::ReceiverOfHelper<T, Completions>;
26}
27
28namespace di {
30}
Definition receiver_of.h:25
Definition receiver.h:10
Definition any_storable.h:9
RemoveCV< RemoveReference< T > > RemoveCVRef
Definition core.h:74
Definition any_storable.h:9