Iros
Loading...
Searching...
No Matches
move.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/algorithm/in_out_result.h
"
4
#include "
di/container/concepts/indirectly_movable.h
"
5
#include "
di/container/concepts/input_container.h
"
6
#include "
di/container/concepts/input_iterator.h
"
7
#include "
di/container/concepts/sentinel_for.h
"
8
#include "
di/container/concepts/weakly_incrementable.h
"
9
#include "
di/container/interface/begin.h
"
10
#include "
di/container/interface/end.h
"
11
#include "
di/container/iterator/iterator_move.h
"
12
#include "
di/container/meta/borrowed_iterator.h
"
13
#include "
di/container/meta/container_iterator.h
"
14
15
namespace
di::container
{
16
template
<
typename
In,
typename
Out>
17
using
MoveResult
=
InOutResult<In, Out>
;
18
19
namespace
detail
{
20
struct
MoveFunction
{
21
template
<concepts::InputIterator In, concepts::SentinelFor<In> Sent, concepts::WeaklyIncrementable Out>
22
requires
(
concepts::IndirectlyMovable<In, Out>
)
23
constexpr
auto
operator
()(In first, Sent last, Out output)
const
->
MoveResult<In, Out>
{
24
for
(; first != last; ++first, ++output) {
25
*output =
iterator_move
(first);
26
}
27
return
{ util::move(first), util::move(output) };
28
}
29
30
template
<concepts::InputContainer Con, concepts::WeaklyIncrementable Out>
31
requires
(
concepts::IndirectlyMovable<meta::ContainerIterator<Con>
, Out>)
32
constexpr
auto
operator
()(Con&&
container
, Out output)
const
->
MoveResult
<
meta::BorrowedIterator<Con>
, Out> {
33
return
(*
this
)(
begin
(
container
),
end
(
container
), util::move(output));
34
}
35
};
36
}
37
38
constexpr
inline
auto
move
=
detail::MoveFunction
{};
39
}
begin.h
borrowed_iterator.h
di::concepts::IndirectlyMovable
Definition
indirectly_movable.h:9
container_iterator.h
end.h
in_out_result.h
indirectly_movable.h
input_container.h
input_iterator.h
iterator_move.h
di::container::detail
Definition
sequence.h:13
di::container
Definition
sequence.h:12
di::container::iterator_move
constexpr auto iterator_move
Definition
iterator_move.h:56
di::container::move
constexpr auto move
Definition
move.h:38
di::container::MoveResult
InOutResult< In, Out > MoveResult
Definition
move.h:17
di::container::end
constexpr auto end
Definition
end.h:47
di::container::begin
constexpr auto begin
Definition
begin.h:44
di::meta::BorrowedIterator
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition
borrowed_iterator.h:11
sentinel_for.h
di::container::InOutResult
Definition
in_out_result.h:8
di::container::detail::MoveFunction
Definition
move.h:20
weakly_incrementable.h
libs
di
include
di
container
algorithm
move.h
Generated by
1.13.0