Iros
 
Loading...
Searching...
No Matches
rotate_copy.h
Go to the documentation of this file.
1#pragma once
2
8
9namespace di::container {
10namespace detail {
12 template<concepts::ForwardIterator It, concepts::SentinelFor<It> Sent, concepts::WeaklyIncrementable Out>
14 constexpr auto operator()(It first, It middle, Sent last, Out output) const -> InOutResult<It, Out> {
15 auto copy_left = container::copy(middle, last, util::move(output));
16 auto copy_right = container::copy(util::move(first), util::move(middle), util::move(copy_left.out));
17 return { util::move(copy_left.in), util::move(copy_right.out) };
18 }
19
20 template<concepts::ForwardContainer Con, concepts::WeaklyIncrementable Out>
22 constexpr auto operator()(Con&& container, meta::ContainerIterator<Con> middle, Out output) const
24 return (*this)(container::begin(container), util::move(middle), container::end(container),
25 util::move(output));
26 }
27 };
28}
29
30constexpr inline auto rotate_copy = detail::RotateCopyFunction {};
31}
32
33namespace di {
35}
Definition indirectly_copyable.h:9
Definition sequence.h:13
Definition sequence.h:12
constexpr auto rotate_copy
Definition rotate_copy.h:30
constexpr auto end
Definition end.h:47
constexpr auto copy
Definition copy.h:30
constexpr auto begin
Definition begin.h:44
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
decltype(container::begin(util::declval< T & >())) ContainerIterator
Definition container_iterator.h:8
Definition zstring_parser.h:9
Definition in_out_result.h:8