concept Receives
The Receives<T> concept holds all the requirements for a
receiver that can receive a T value (or none, when T
is void).
Prototype
template<typename T, typename Receives>
concept Receives = ...;
Requirements
A set_value_inline and set_value_noinline members, which can be called with
a T&& value, or no parameters, if T is void.
Examples
struct discard_receiver {
template<typename T>
void set_value_inline(T) {
assert(std::is_constant_evaluated());
}
void set_value_inline() {
assert(std::is_constant_evaluated());
}
template<typename T>
void set_value_noinline(T) {
assert(std::is_constant_evaluated());
}
void set_value_noinline() {
assert(std::is_constant_evaluated());
}
};
static_assert(async::Receives<discard_receiver, void>);
static_assert(async::Receives<discard_receiver, int>);
static_assert(async::Receives<discard_receiver, std::string>);