Iros
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/meta/container_reference.h
"
4
#include "
di/container/meta/container_rvalue.h
"
5
#include "
di/container/view/all.h
"
6
#include "
di/container/view/common_view.h
"
7
#include "
di/function/pipeable.h
"
8
#include "
di/util/forward.h
"
9
10
namespace
di::container::view
{
11
namespace
detail
{
12
template
<
typename
T>
13
concept
AllCommon
=
concepts::CommonContainer<T>
;
14
15
template
<
typename
T>
16
concept
ViewCommon
=
requires
(T&&
container
) {
CommonView
{ util::forward<T>(
container
) }; };
17
18
struct
CommonFunction
:
public
function::pipeline::EnablePipeline
{
19
template
<concepts::ViewableContainer Con>
20
requires
(
AllCommon<Con>
||
ViewCommon<Con>
)
21
constexpr
auto
operator
()(Con&&
container
)
const
->
concepts::View
auto
{
22
if
constexpr
(
AllCommon<Con>
) {
23
return
all
(util::forward<Con>(
container
));
24
}
else
{
25
return
CommonView
{ util::forward<Con>(
container
) };
26
}
27
}
28
};
29
}
30
31
constexpr
inline
auto
common
=
detail::CommonFunction
{};
32
}
33
34
namespace
di
{
35
using
view::common;
36
}
all.h
di::container::CommonView
Definition
common_view.h:11
common_view.h
di::concepts::CommonContainer
Definition
common_container.h:10
di::concepts::View
Definition
view.h:10
di::container::view::detail::AllCommon
Definition
common.h:13
di::container::view::detail::ViewCommon
Definition
common.h:16
container_reference.h
container_rvalue.h
forward.h
di::container::view::detail
Definition
adjacent.h:9
di::container::view
Definition
adjacent.h:8
di::container::view::common
constexpr auto common
Definition
common.h:31
di::container::view::all
constexpr auto all
Definition
all.h:35
di::container
Definition
sequence.h:12
di
Definition
zstring_parser.h:9
pipeable.h
di::container::view::detail::CommonFunction
Definition
common.h:18
di::function::pipeline::EnablePipeline
Definition
pipeable.h:8
libs
di
include
di
container
view
common.h
Generated by
1.13.0