Iros
Loading...
Searching...
No Matches
overload.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/function/piped.h
"
4
#include "
di/function/pipeline.h
"
5
#include "
di/meta/operations.h
"
6
#include "
di/meta/util.h
"
7
#include "
di/util/forward.h
"
8
9
namespace
di::function
{
10
namespace
detail
{
11
template
<
typename
... Funs>
12
struct
OverloadImpl
: Funs... {
13
using
Funs::operator()...;
14
};
15
16
template
<
typename
... Funs>
17
OverloadImpl
(Funs&&...) ->
OverloadImpl
<Funs...>;
18
19
struct
OverloadFunction
{
20
template
<
typename
... Funs>
21
requires
(
concepts::ConstructibleFrom<meta::Decay<Funs>
, Funs> && ...)
22
constexpr auto operator()(Funs&&... functions)
const
{
23
return
function::piped
(
OverloadImpl
(util::forward<Funs>(functions)...));
24
}
25
};
26
}
27
28
constexpr
inline
auto
overload
=
detail::OverloadFunction
{};
29
}
30
31
namespace
di
{
32
using
function::overload
;
33
}
di::concepts::ConstructibleFrom
Definition
operations.h:11
forward.h
operations.h
di::function::detail
Definition
bind_back.h:16
di::function::detail::OverloadImpl
OverloadImpl(Funs &&...) -> OverloadImpl< Funs... >
di::function
Definition
as_bool.h:8
di::function::piped
constexpr auto piped(F &&function)
Definition
piped.h:56
di::function::overload
constexpr auto overload
Definition
overload.h:28
di
Definition
zstring_parser.h:9
piped.h
pipeline.h
di::function::detail::OverloadFunction
Definition
overload.h:19
di::function::detail::OverloadImpl
Definition
overload.h:12
util.h
libs
di
include
di
function
overload.h
Generated by
1.13.0