Iros
 
Loading...
Searching...
No Matches
uninitialized_relocate.h
Go to the documentation of this file.
1#pragma once
2
7#include "di/util/addressof.h"
10#include "di/util/relocate.h"
11
12namespace di::container {
13template<typename In, typename Out>
15
16namespace detail {
18 template<concepts::InputIterator In, concepts::SentinelFor<In> Sent, concepts::UninitForwardIterator Out,
19 concepts::UninitSentinelFor<Out> OutSent>
22 constexpr auto operator()(In input, Sent in_sent, Out output, OutSent out_sent) const
24 // FIXME: add specical support for trivially relocatable types when not in constexpr context.
25 for (; input != in_sent && output != out_sent; ++input, ++output) {
26 util::construct_at(util::addressof(*output), util::relocate(*input));
27 }
28 return { util::move(input), util::move(output) };
29 }
30
31 template<concepts::InputContainer Con, concepts::UninitForwardContainer Out>
34 constexpr auto operator()(Con&& in, Out&& out) const
36 return (*this)(container::begin(in), container::end(in), container::begin(out), container::end(out));
37 }
38 };
39}
40
42}
43
44namespace di {
46}
Definition operations.h:11
Definition operations.h:57
Definition sequence.h:13
Definition sequence.h:12
constexpr auto uninitialized_relocate
Definition uninitialized_relocate.h:41
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
container::InOutResult< In, Out > UninitializedRelocateResult
Definition uninitialized_relocate.h:14
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
meta::Type< decltype(container::iterator_value(types::in_place_type< meta::RemoveCVRef< T > >))> IteratorValue
Definition iterator_value.h:8
IteratorValue< ContainerIterator< T > > ContainerValue
Definition container_value.h:8
constexpr auto relocate
Definition relocate.h:21
constexpr auto construct_at
Definition construct_at.h:27
Definition zstring_parser.h:9
Definition in_out_result.h:8
Definition uninitialized_relocate.h:17