Iros
 
Loading...
Searching...
No Matches
single.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/util.h"
6#include "di/util/forward.h"
7
8namespace di::container::view {
9namespace detail {
11 template<typename T>
12 constexpr auto operator()(T&& value) const -> meta::TagInvokeResult<SingleFunction, T> {
13 return function::tag_invoke(*this, util::forward<T>(value));
14 }
15
16 template<typename T>
17 constexpr auto operator()(T&& value) const {
18 return SingleView<meta::Decay<T>>(util::forward<T>(value));
19 }
20 };
21}
22
23constexpr inline auto single = detail::SingleFunction {};
24}
25
26namespace di {
27using view::single;
28}
Definition single_view.h:15
Definition adjacent.h:9
Definition adjacent.h:8
constexpr auto single
Definition single.h:23
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
decltype(di::function::tag_invoke(util::declval< Tag >(), util::declval< Args >()...)) TagInvokeResult
Definition tag_invoke.h:40
Definition zstring_parser.h:9
constexpr auto operator()(T &&value) const
Definition single.h:17
constexpr auto operator()(T &&value) const -> meta::TagInvokeResult< SingleFunction, T >
Definition single.h:12