Iros
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
}
di::concepts::Queryable
Definition
queryable.h:7
di::concepts::TagInvocable
Definition
tag_invoke.h:33
empty_env.h
di::execution::detail
Definition
read.h:70
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
di::execution::detail::GetEnvFunction
Definition
get_env.h:11
di::execution::detail::GetEnvFunction::operator()
constexpr auto operator()(T const &value) const -> decltype(auto)
Definition
get_env.h:13
di::execution::detail::GetEnvFunction::operator()
constexpr auto operator()() const
Definition
read.h:87
di::types::EmptyEnv
Definition
empty_env.h:4
tag_invoke.h
util.h
libs
di
include
di
execution
interface
get_env.h
Generated by
1.13.0