Iros
 
Loading...
Searching...
No Matches
invoke_as_fallible.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/language.h"
7#include "di/meta/util.h"
8#include "di/meta/vocab.h"
11
12namespace di::vocab {
13namespace detail {
15 template<typename F, typename... Args, concepts::DecayConstructible R = meta::InvokeResult<F, Args...>>
16 requires(concepts::Expected<R>)
17 constexpr auto operator()(F&& function, Args&&... args) const -> meta::Decay<R> {
18 return function::invoke(util::forward<F>(function), util::forward<Args>(args)...);
19 }
20
21 template<typename F, typename... Args, typename R = meta::InvokeResult<F, Args...>,
22 typename G = Expected<meta::UnwrapRefRValue<R>, void>>
24 constexpr auto operator()(F&& function, Args&&... args) const -> G {
25 return G { function::invoke(util::forward<F>(function), util::forward<Args>(args)...) };
26 }
27
28 template<typename F, typename... Args, typename R = meta::InvokeResult<F, Args...>>
30 constexpr auto operator()(F&& function, Args&&... args) const -> Expected<void, void> {
31 function::invoke(util::forward<F>(function), util::forward<Args>(args)...);
32 return {};
33 }
34 };
35}
36
38}
39
40namespace di {
41using vocab::invoke_as_fallible;
42}
Definition expected_forward_declaration.h:8
Definition operations.h:11
Definition vocab.h:30
Definition core.h:128
Definition as_bool.h:8
constexpr auto invoke
Definition invoke.h:100
Conditional< concepts::LanguageArray< RemoveReference< T > >, RemoveExtent< RemoveReference< T > > *, Conditional< concepts::LanguageFunction< RemoveReference< T > >, AddPointer< RemoveReference< T > >, RemoveCVRef< T > > > Decay
Definition language.h:574
decltype(function::detail::invoke_impl(util::declval< Ts >()...)) InvokeResult
Definition invoke.h:64
Definition erasure_cast.h:7
Definition lazy.h:165
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
Definition zstring_parser.h:9
Definition invoke_as_fallible.h:14