Iros
 
Loading...
Searching...
No Matches
sequence.h
Go to the documentation of this file.
1#pragma once
2
7#include "di/meta/language.h"
8#include "di/meta/vocab.h"
9#include "di/util/create.h"
11
12namespace di::container {
13namespace detail {
15 template<concepts::ViewableContainer Con, typename F, typename T = meta::ContainerReference<Con>,
16 typename R = meta::InvokeResult<F, T>, typename G = meta::LikeExpected<R, void>>
17 constexpr auto operator()(Con&& container, F function) const -> G {
18 auto view = view::all(util::forward<Con>(container));
19 for (T value : view) {
21 auto result = function::invoke(function, util::forward<T>(value));
22 if (!result) {
23 return G { unexpect, util::move(result).error() };
24 }
25 } else {
26 function::invoke_r<void>(function, util::forward<T>(value));
27 }
28 }
29 return util::create<G>();
30 }
31 };
32}
33
35}
36
37namespace di {
39}
Definition vocab.h:30
Definition core.h:128
Definition hash_write.h:68
Definition adjacent.h:8
constexpr auto all
Definition all.h:35
Definition sequence.h:12
constexpr auto sequence
Definition sequence.h:34
Definition as_bool.h:8
constexpr auto invoke
Definition invoke.h:100
constexpr auto invoke_r
Definition invoke.h:103
constexpr auto curry_back
Definition curry_back.h:141
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto create(Args &&... args)
Definition create.h:21
Definition zstring_parser.h:9
constexpr auto unexpect
Definition unexpect.h:8
constexpr auto operator()(Con &&container, F function) const -> G
Definition sequence.h:17