Iros
 
Loading...
Searching...
No Matches
forwarding_query.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/core.h"
6
7namespace di::execution {
9 constexpr auto operator()(auto tag) const -> bool {
10 if constexpr (concepts::TagInvocable<ForwardingQuery, decltype(tag)>) {
11 static_assert(concepts::SameAs<bool, meta::TagInvokeResult<ForwardingQuery, decltype(tag)>>,
12 "ForwardingQuery must return bool");
13 return function::tag_invoke(*this, tag);
14 } else if (concepts::DerivedFrom<decltype(tag), ForwardingQuery>) {
15 return true;
16 } else {
17 return false;
18 }
19 }
20};
21
22constexpr inline auto forwarding_query = ForwardingQuery {};
23}
Definition operations.h:114
Definition core.h:114
Definition tag_invoke.h:33
Definition bulk.h:30
constexpr auto forwarding_query
Definition forwarding_query.h:22
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
decltype(di::function::tag_invoke(util::declval< Tag >(), util::declval< Args >()...)) TagInvokeResult
Definition tag_invoke.h:40
Definition forwarding_query.h:8
constexpr auto operator()(auto tag) const -> bool
Definition forwarding_query.h:9