Iros
Loading...
Searching...
No Matches
uninitialized_fill_n.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/concepts/prelude.h
"
4
#include "
di/container/iterator/prelude.h
"
5
#include "
di/container/meta/prelude.h
"
6
#include "
di/util/addressof.h
"
7
#include "
di/util/construct_at.h
"
8
9
namespace
di::container
{
10
namespace
detail
{
11
struct
UninitializedFillNFunction
{
12
template
<concepts::UninitForwardIterator Out, concepts::UninitSentinelFor<Out> OutSent,
typename
T>
13
requires
(
concepts::ConstructibleFrom<meta::IteratorValue<Out>
, T
const
&>)
14
constexpr
auto
operator
()(Out out,
meta::IteratorSSizeType<Out>
n, T
const
& value)
const
-> Out {
15
for
(; n > 0; --n, ++out) {
16
util::construct_at
(util::addressof(*out), value);
17
}
18
return
out;
19
}
20
};
21
}
22
23
constexpr
inline
auto
uninitialized_fill_n
=
detail::UninitializedFillNFunction
{};
24
}
25
26
namespace
di
{
27
using
container::uninitialized_fill_n
;
28
}
addressof.h
di::concepts::ConstructibleFrom
Definition
operations.h:11
construct_at.h
prelude.h
prelude.h
prelude.h
di::container::detail
Definition
sequence.h:13
di::container
Definition
sequence.h:12
di::container::uninitialized_fill_n
constexpr auto uninitialized_fill_n
Definition
uninitialized_fill_n.h:23
di::meta::IteratorSSizeType
decltype(container::iterator_ssize_type(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorSSizeType
Definition
iterator_ssize_type.h:8
di::util::construct_at
constexpr auto construct_at
Definition
construct_at.h:27
di
Definition
zstring_parser.h:9
di::container::detail::UninitializedFillNFunction
Definition
uninitialized_fill_n.h:11
libs
di
include
di
container
algorithm
uninitialized_fill_n.h
Generated by
1.13.0