Iros
 
Loading...
Searching...
No Matches
as_rvalue.h
Go to the documentation of this file.
1#pragma once
2
8#include "di/util/forward.h"
9
10namespace di::container::view {
11namespace detail {
12 template<typename T>
13 concept AllAsRValue = requires(T&& container) { all(util::forward<T>(container)); } &&
15
16 template<typename T>
17 concept AsRValueViewAsRValue = requires(T&& container) { AsRValueView { util::forward<T>(container) }; };
18
20 template<concepts::ViewableContainer Con>
22 constexpr auto operator()(Con&& container) const -> concepts::View auto {
23 if constexpr (AllAsRValue<Con>) {
24 return all(util::forward<Con>(container));
25 } else {
26 return AsRValueView { util::forward<Con>(container) };
27 }
28 }
29 };
30}
31
32constexpr inline auto as_rvalue = detail::AsRValueFunction {};
33}
34
35namespace di {
36using view::as_rvalue;
37}
Definition as_rvalue_view.h:17
Definition core.h:114
Definition view.h:10
Definition adjacent.h:9
Definition adjacent.h:8
constexpr auto as_rvalue
Definition as_rvalue.h:32
constexpr auto all
Definition all.h:35
Definition sequence.h:12
IteratorReference< ContainerIterator< T > > ContainerReference
Definition container_reference.h:8
Definition zstring_parser.h:9