Iros
 
Loading...
Searching...
No Matches
uninitialized_default_construct.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/meta/trivial.h"
7#include "di/util/addressof.h"
9
10namespace di::container {
11namespace detail {
13 template<concepts::UninitForwardIterator Out, concepts::UninitSentinelFor<Out> OutSent>
15 constexpr auto operator()(Out out, OutSent out_last) const -> Out {
17 return container::next(out, out_last);
18 }
19
20 for (; out != out_last; ++out) {
21 util::default_construct_at(util::addressof(*out));
22 }
23 return out;
24 }
25
26 template<concepts::UninitForwardContainer Out>
28 constexpr auto operator()(Out&& out) const -> meta::BorrowedIterator<Out> {
29 return (*this)(container::begin(out), container::end(out));
30 }
31 };
32}
33
35}
36
37namespace di {
39}
Definition operations.h:27
Definition sequence.h:13
Definition sequence.h:12
constexpr auto next
Definition next.h:35
constexpr auto uninitialized_default_construct
Definition uninitialized_default_construct.h:34
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
constexpr auto default_construct_at
Definition default_construct_at.h:27
Definition zstring_parser.h:9
Definition uninitialized_default_construct.h:12