Iros
 
Loading...
Searching...
No Matches
iota.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace di::container {
9namespace detail {
10 struct IotaFunction {
11 template<concepts::Iterator Out, concepts::SentinelFor<Out> Sent, concepts::WeaklyIncrementable T>
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
27constexpr inline auto iota = detail::IotaFunction {};
28}
Definition indirectly_writable.h:8
Definition sequence.h:13
Definition sequence.h:12
constexpr auto iota
Definition iota.h:27
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
Definition out_value_result.h:8
constexpr auto operator()(Con &&container, T value) const -> OutValueResult< meta::BorrowedIterator< Con >, T >
Definition iota.h:21