Iros
 
Loading...
Searching...
No Matches
move.h
Go to the documentation of this file.
1#pragma once
2
14
15namespace di::container {
16template<typename In, typename Out>
18
19namespace detail {
20 struct MoveFunction {
21 template<concepts::InputIterator In, concepts::SentinelFor<In> Sent, concepts::WeaklyIncrementable 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>
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
38constexpr inline auto move = detail::MoveFunction {};
39}
Definition indirectly_movable.h:9
Definition sequence.h:13
Definition sequence.h:12
constexpr auto iterator_move
Definition iterator_move.h:56
constexpr auto move
Definition move.h:38
InOutResult< In, Out > MoveResult
Definition move.h:17
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
Definition in_out_result.h:8