Iros
Loading...
Searching...
No Matches
clone.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/concepts/prelude.h
"
4
#include "
di/container/meta/prelude.h
"
5
#include "
di/container/view/all.h
"
6
#include "
di/container/view/transform.h
"
7
#include "
di/function/pipeable.h
"
8
#include "
di/meta/language.h
"
9
#include "
di/util/clone.h
"
10
#include "
di/util/forward.h
"
11
12
namespace
di::container::view
{
13
namespace
detail
{
14
struct
CloneFunction
:
function::pipeline::EnablePipeline
{
15
template
<concepts::ViewableContainer Con,
typename
Value = meta::ContainerReference<Con>>
16
requires
(!
concepts::LValueReference<Value>
||
concepts::Clonable<Value>
)
17
constexpr
auto
operator
()(Con&&
container
)
const
->
concepts::View
auto
{
18
if
constexpr
(!
concepts::LValueReference<Value>
) {
19
return
all
(util::forward<Con>(
container
));
20
}
else
{
21
return
transform
(util::forward<Con>(
container
),
util::clone
);
22
}
23
}
24
};
25
}
26
27
constexpr
inline
auto
clone
=
detail::CloneFunction
{};
28
}
all.h
di::concepts::Clonable
Definition
clone.h:44
di::concepts::LValueReference
Definition
language.h:30
di::concepts::View
Definition
view.h:10
transform.h
forward.h
prelude.h
prelude.h
language.h
di::container::view::detail
Definition
adjacent.h:9
di::container::view
Definition
adjacent.h:8
di::container::view::transform
constexpr auto transform
Definition
transform.h:28
di::container::view::clone
constexpr auto clone
Definition
clone.h:27
di::container::view::all
constexpr auto all
Definition
all.h:35
di::container
Definition
sequence.h:12
di::util::clone
constexpr auto clone
Definition
clone.h:39
pipeable.h
di::container::view::detail::CloneFunction
Definition
clone.h:14
di::function::pipeline::EnablePipeline
Definition
pipeable.h:8
clone.h
libs
di
include
di
container
view
clone.h
Generated by
1.13.0