Iros
Loading...
Searching...
No Matches
pipeline.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/function/compose.h
"
4
#include "
di/function/invoke.h
"
5
#include "
di/function/pipeable.h
"
6
#include "
di/util/forward.h
"
7
8
namespace
di::function::pipeline
{
9
template
<
typename
T, Pipeable F>
10
requires
(concepts::Invocable<F, T>)
11
constexpr
auto
operator
|(T&&
value
, F&&
function
) ->
decltype
(
auto
) {
12
return
function::invoke
(util::forward<F>(
function
), util::forward<T>(
value
));
13
}
14
15
template
<Pipeable F, Pipeable G>
16
requires
(!
concepts::Invocable<G, F>
)
17
constexpr
auto
operator
|(F&& f, G&& g) {
18
return
function::compose
(util::forward<G>(g), util::forward<F>(f));
19
}
20
21
template
<Pipeable F, Pipeable G>
22
constexpr
auto
operator*
(F&& f, G&& g) {
23
return
function::compose
(util::forward<G>(g), util::forward<F>(f));
24
}
25
}
compose.h
di::concepts::Invocable
Definition
invoke.h:58
forward.h
invoke.h
di::function::pipeline
Definition
pipeable.h:7
di::function::pipeline::operator*
constexpr auto operator*(F &&f, G &&g)
Definition
pipeline.h:22
di::function
Definition
as_bool.h:8
di::function::invoke
constexpr auto invoke
Definition
invoke.h:100
di::function::compose
constexpr auto compose(F &&f)
Definition
compose.h:59
di::function::value
constexpr auto value
Definition
value.h:34
pipeable.h
libs
di
include
di
function
pipeline.h
Generated by
1.13.0