di 0.1.0
Loading...
Searching...
No Matches
into_status_code.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace di::vocab {
7namespace detail {
8 struct IntoStatusCodeFunction {
9 template<typename... Args>
10 requires(concepts::TagInvocable<IntoStatusCodeFunction, Args...>)
11 constexpr auto operator()(Args&&... args) const -> concepts::StatusCode decltype(auto) {
12 return function::tag_invoke(*this, util::forward<Args>(args)...);
13 }
14
15 template<typename T, typename... Args>
16 requires(requires(T&& value, Args&&... args) {
17 di::forward<T>(value).into_status_code(di::forward<Args>(args)...);
18 })
19 constexpr auto operator()(T&& value, Args&&... args) const -> concepts::StatusCode decltype(auto) {
20 return di::forward<T>(value).into_status_code(di::forward<Args>(args)...);
21 }
22 };
23}
24
25constexpr inline auto into_status_code = detail::IntoStatusCodeFunction {};
26}
27
28namespace di::concepts {
29template<typename... Args>
31 requires(Args&&... args) { vocab::into_status_code(util::forward<Args>(args)...); };
32
33template<typename Result, typename... Args>
35 requires(Args&&... args) { Result(vocab::into_status_code(util::forward<Args>(args)...)); };
36}
37
38namespace di {
40}
Definition into_status_code.h:30
Definition into_status_code.h:34
Definition any_storable.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto value
Definition value.h:34
Definition lazy.h:165
constexpr auto into_status_code
Definition into_status_code.h:25
Expected< T, Error > Result
Definition result.h:8
Definition any_storable.h:9