Iros
Loading...
Searching...
No Matches
generate_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
7
namespace
di::container
{
8
namespace
detail
{
9
struct
GenerateNFunction
{
10
template
<concepts::Iterator Out,
typename
SSizeType = meta::IteratorSSizeType<Out>,
11
concepts::CopyConstructible F>
12
requires
(
concepts::Invocable<F&>
&&
concepts::IndirectlyWritable<Out, meta::InvokeResult<F&>
>)
13
constexpr
auto
operator
()(Out output,
meta::TypeIdentity<SSizeType>
n, F gen)
const
-> Out {
14
for
(SSizeType i = 0; i < n; ++i, ++output) {
15
*output =
function::invoke
(gen);
16
}
17
return
output;
18
}
19
};
20
}
21
22
constexpr
inline
auto
generate_n
=
detail::GenerateNFunction
{};
23
}
di::concepts::IndirectlyWritable
Definition
indirectly_writable.h:8
di::concepts::Invocable
Definition
invoke.h:58
prelude.h
prelude.h
prelude.h
di::container::detail
Definition
sequence.h:13
di::container
Definition
sequence.h:12
di::container::generate_n
constexpr auto generate_n
Definition
generate_n.h:22
di::function::invoke
constexpr auto invoke
Definition
invoke.h:100
di::meta::TypeIdentity
Type< TypeConstant< T > > TypeIdentity
This is a helper template to prevent C++ from deducing the type of template argument.
Definition
core.h:32
di::container::detail::GenerateNFunction
Definition
generate_n.h:9
libs
di
include
di
container
algorithm
generate_n.h
Generated by
1.13.0