Iros
Loading...
Searching...
No Matches
iota.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/algorithm/out_value_result.h
"
4
#include "
di/container/concepts/prelude.h
"
5
#include "
di/container/iterator/prelude.h
"
6
#include "
di/container/meta/prelude.h
"
7
8
namespace
di::container
{
9
namespace
detail
{
10
struct
IotaFunction
{
11
template
<concepts::Iterator Out, concepts::SentinelFor<Out> Sent, concepts::WeaklyIncrementable T>
12
requires
(
concepts::IndirectlyWritable<Out, T const&>
)
13
constexpr
auto
operator
()(Out output, Sent last, T value)
const
->
OutValueResult<Out, T>
{
14
for
(; output != last; ++output, ++value) {
15
*output = util::as_const(value);
16
}
17
return
{ util::move(output), util::move(value) };
18
}
19
20
template
<concepts::WeaklyIncrementable T, concepts::OutputContainer<T const&> Con>
21
constexpr
auto
operator()
(Con&&
container
, T value)
const
->
OutValueResult<meta::BorrowedIterator<Con>
, T> {
22
return
(*
this
)(
container::begin
(
container
),
container::end
(
container
), util::move(value));
23
}
24
};
25
}
26
27
constexpr
inline
auto
iota
=
detail::IotaFunction
{};
28
}
di::concepts::IndirectlyWritable
Definition
indirectly_writable.h:8
prelude.h
prelude.h
prelude.h
di::container::detail
Definition
sequence.h:13
di::container
Definition
sequence.h:12
di::container::iota
constexpr auto iota
Definition
iota.h:27
di::container::end
constexpr auto end
Definition
end.h:47
di::container::begin
constexpr auto begin
Definition
begin.h:44
out_value_result.h
di::container::OutValueResult
Definition
out_value_result.h:8
di::container::detail::IotaFunction
Definition
iota.h:10
di::container::detail::IotaFunction::operator()
constexpr auto operator()(Con &&container, T value) const -> OutValueResult< meta::BorrowedIterator< Con >, T >
Definition
iota.h:21
libs
di
include
di
container
algorithm
iota.h
Generated by
1.13.0