di
0.1.0
Loading...
Searching...
No Matches
get_env.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/execution/concepts/queryable.h
"
4
#include "
di/execution/query/forwarding_query.h
"
5
#include "
di/execution/types/empty_env.h
"
6
#include "
di/function/tag_invoke.h
"
7
#include "
di/meta/util.h
"
8
9
namespace
di::execution
{
10
namespace
detail {
11
struct
GetEnvFunction {
12
template
<
typename
T>
13
constexpr
auto
operator()(T
const
& value)
const
->
decltype
(
auto
) {
14
if
constexpr
(concepts::TagInvocable<GetEnvFunction, T const&>) {
15
static_assert
(concepts::Queryable<meta::TagInvokeResult<GetEnvFunction, T const&>>,
16
"get_env() must return a Queryable."
);
17
return
function::tag_invoke
(*
this
, value);
18
}
else
{
19
return
types::EmptyEnv {};
20
}
21
}
22
23
constexpr
auto
operator()()
const
;
24
};
25
}
26
27
constexpr
inline
auto
get_env
= detail::GetEnvFunction {};
28
}
empty_env.h
di::execution
Definition
bulk.h:30
di::execution::get_env
constexpr auto get_env
Definition
get_env.h:27
di::function::tag_invoke_ns::tag_invoke
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition
tag_invoke.h:22
forwarding_query.h
queryable.h
tag_invoke.h
util.h
di
execution
interface
get_env.h
Generated by
1.13.2