di 0.1.0
Loading...
Searching...
No Matches
di::vocab::Expected< void, E > Class Template Reference

#include <di/vocab/expected/expected_void_value.h>

Inheritance diagram for di::vocab::Expected< void, E >:
di::function::monad::MonadInterface< Expected< void, E > >

Public Types

using Value = void
 
using Error = E
 
using UnexpectedType = Unexpected<E>
 

Public Member Functions

constexpr Expected ()=default
 
constexpr Expected (Expected const &)=default
 
constexpr Expected (Expected const &)=delete
 
constexpr Expected (Expected &&)=default
 
template<typename F>
requires (concepts::ConstructibleFrom<E, F const&> && concepts::detail::ExpectedCanConvertConstructor<void, E, void, F>)
constexpr explicit (!concepts::ConvertibleTo< F const &, E >) Expected(Expected< void
 
constexpr F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr explicit (!concepts::ConvertibleTo< F, E >) Expected(Expected< void
 
constexpr F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr F G const &constexpr explicit (!concepts::ConvertibleTo< G const &, E >) Expected(Unexpected< G > const &error)
 
template<typename G>
requires (concepts::ConstructibleFrom<E, G>)
constexpr explicit (!concepts::ConvertibleTo< G, E >) Expected(Unexpected< G > &&error)
 
constexpr Expected (types::InPlace)
 
template<typename... Args>
requires (concepts::ConstructibleFrom<E, Args...>)
constexpr Expected (types::Unexpect, Args &&... args)
 
template<typename U, typename... Args>
requires (concepts::ConstructibleFrom<E, std::initializer_list<U>, Args...>)
constexpr Expected (types::Unexpect, std::initializer_list< U > list, Args &&... args)
 
constexpr ~Expected ()=default
 
constexpr auto operator= (Expected const &) -> Expected &requires(!concepts::CopyConstructible< E >)=delete
 
constexpr auto operator= (Expected const &) -> Expected &requires(concepts::CopyConstructible< E >)=default
 
constexpr auto operator= (Expected &&) -> Expected &requires(concepts::MoveConstructible< E >)=default
 
template<typename G>
requires (concepts::ConstructibleFrom<E, G const&>)
constexpr auto operator= (Unexpected< G > const &error) -> Expected &
 
template<typename G>
requires (concepts::ConstructibleFrom<E, G>)
constexpr auto operator= (Unexpected< G > &&error) -> Expected &
 
constexpr operator bool () const
 
constexpr auto has_value () const -> bool
 
constexpr void emplace ()
 
constexpr void operator* () const
 
constexpr void value () const &
 
constexpr void value () &&
 
constexpr auto error () &-> E &
 
constexpr auto error () const &-> E const &
 
constexpr auto error () &&-> E &&
 
constexpr auto error () const &&-> E const &&
 
constexpr auto __try_did_fail () &&-> Unexpected< E >
 
constexpr auto __try_did_succeed () &&-> Expected
 
constexpr void __try_move_out () &&
 
- Public Member Functions inherited from di::function::monad::MonadInterface< Expected< void, E > >
constexpr auto transform (F &&function) &-> decltype(auto)
 
constexpr auto transform (F &&function) const &-> decltype(auto)
 
constexpr auto transform (F &&function) &&-> decltype(auto)
 
constexpr auto transform (F &&function) const &&-> decltype(auto)
 
constexpr auto and_then (F &&function) &-> decltype(auto)
 
constexpr auto and_then (F &&function) const &-> decltype(auto)
 
constexpr auto and_then (F &&function) &&-> decltype(auto)
 
constexpr auto and_then (F &&function) const &&-> decltype(auto)
 
constexpr auto or_else (F &&function) &-> decltype(auto)
 
constexpr auto or_else (F &&function) const &-> decltype(auto)
 
constexpr auto or_else (F &&function) &&-> decltype(auto)
 
constexpr auto or_else (F &&function) const &&-> decltype(auto)
 
constexpr auto transform_error (F &&function) &-> decltype(auto)
 
constexpr auto transform_error (F &&function) const &-> decltype(auto)
 
constexpr auto transform_error (F &&function) &&-> decltype(auto)
 
constexpr auto transform_error (F &&function) const &&-> decltype(auto)
 

Public Attributes

constexpr F const & other: m_error(other.m_error) {} template<typename F> requires(concepts::ConstructibleFrom<E
 
constexpr F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr F && other: m_error(util::move(other).m_error) {} template<typename G> requires(concepts::ConstructibleFrom<E
 

Friends

template<typename U, typename G>
class Expected
 
constexpr friend void tag_invoke (types::Tag< util::swap >, Expected &a, Expected &b)
 
template<concepts::EqualityComparableWith< E > G>
constexpr friend auto operator== (Expected const &a, Expected< void, G > const &b) -> bool
 
template<concepts::EqualityComparableWith< E > G>
constexpr friend auto operator== (Expected const &a, Unexpected< G > const &b) -> bool
 
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename U = meta::UnwrapRefDecay<meta::InvokeResult<F>>>
requires (concepts::ConstructibleFrom<E, meta::Like<Self, E>>)
constexpr friend auto tag_invoke (types::Tag< function::monad::fmap >, Self &&self, F &&function) -> Expected< U, E >
 
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename R = meta::InvokeResult<F>>
requires (concepts::Expected<R> && concepts::ConvertibleTo<meta::Like<Self, E>, meta::ExpectedError<R>>)
constexpr friend auto tag_invoke (types::Tag< function::monad::bind >, Self &&self, F &&function) -> R
 
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename R = meta::InvokeResult<F, meta::Like<Self, E>>>
requires (concepts::Expected<R> && concepts::LanguageVoid<meta::ExpectedValue<R>>)
constexpr friend auto tag_invoke (types::Tag< function::monad::fail >, Self &&self, F &&function) -> R
 
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename G = meta::UnwrapRefDecay<meta::InvokeResult<F, meta::Like<Self, E>>>>
constexpr friend auto tag_invoke (types::Tag< function::monad::fmap_right >, Self &&self, F &&function) -> Expected< void, G >
 

Member Typedef Documentation

◆ Error

template<typename E>
using di::vocab::Expected< void, E >::Error = E

◆ UnexpectedType

template<typename E>
using di::vocab::Expected< void, E >::UnexpectedType = Unexpected<E>

◆ Value

template<typename E>
using di::vocab::Expected< void, E >::Value = void

Constructor & Destructor Documentation

◆ Expected() [1/7]

template<typename E>
di::vocab::Expected< void, E >::Expected ( )
constexprdefault

◆ Expected() [2/7]

template<typename E>
di::vocab::Expected< void, E >::Expected ( Expected< void, E > const & )
constexprdefault

◆ Expected() [3/7]

template<typename E>
di::vocab::Expected< void, E >::Expected ( Expected< void, E > const & )
constexprdelete

◆ Expected() [4/7]

template<typename E>
di::vocab::Expected< void, E >::Expected ( Expected< void, E > && )
constexprdefault

◆ Expected() [5/7]

template<typename E>
di::vocab::Expected< void, E >::Expected ( types::InPlace )
inlineexplicitconstexpr

◆ Expected() [6/7]

template<typename E>
template<typename... Args>
requires (concepts::ConstructibleFrom<E, Args...>)
di::vocab::Expected< void, E >::Expected ( types::Unexpect ,
Args &&... args )
inlineexplicitconstexpr

◆ Expected() [7/7]

template<typename E>
template<typename U, typename... Args>
requires (concepts::ConstructibleFrom<E, std::initializer_list<U>, Args...>)
di::vocab::Expected< void, E >::Expected ( types::Unexpect ,
std::initializer_list< U > list,
Args &&... args )
inlineexplicitconstexpr

◆ ~Expected()

template<typename E>
di::vocab::Expected< void, E >::~Expected ( )
constexprdefault

Member Function Documentation

◆ __try_did_fail()

template<typename E>
auto di::vocab::Expected< void, E >::__try_did_fail ( ) && -> Unexpected<E>
inlineconstexpr

◆ __try_did_succeed()

template<typename E>
auto di::vocab::Expected< void, E >::__try_did_succeed ( ) && -> Expected
inlineconstexpr

◆ __try_move_out()

template<typename E>
void di::vocab::Expected< void, E >::__try_move_out ( ) &&
inlineconstexpr

◆ emplace()

template<typename E>
void di::vocab::Expected< void, E >::emplace ( )
inlineconstexpr

◆ error() [1/4]

template<typename E>
auto di::vocab::Expected< void, E >::error ( ) && -> E&&
inlineconstexpr

◆ error() [2/4]

template<typename E>
auto di::vocab::Expected< void, E >::error ( ) & -> E&
inlineconstexpr

◆ error() [3/4]

template<typename E>
auto di::vocab::Expected< void, E >::error ( ) const && -> E const&&
inlineconstexpr

◆ error() [4/4]

template<typename E>
auto di::vocab::Expected< void, E >::error ( ) const & -> E const&
inlineconstexpr

◆ explicit() [1/4]

template<typename E>
template<typename F>
requires (concepts::ConstructibleFrom<E, F const&> && concepts::detail::ExpectedCanConvertConstructor<void, E, void, F>)
di::vocab::Expected< void, E >::explicit ( !concepts::ConvertibleTo< F const &, E > )
constexpr

◆ explicit() [2/4]

template<typename E>
F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr di::vocab::Expected< void, E >::explicit ( !concepts::ConvertibleTo< F, E > )
constexpr

◆ explicit() [3/4]

template<typename E>
F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr F G const &constexpr di::vocab::Expected< void, E >::explicit ( !concepts::ConvertibleTo< G const &, E > ) const &
inlineconstexpr

◆ explicit() [4/4]

template<typename E>
template<typename G>
requires (concepts::ConstructibleFrom<E, G>)
di::vocab::Expected< void, E >::explicit ( !concepts::ConvertibleTo< G, E > ) &&
inlineconstexpr

◆ has_value()

template<typename E>
auto di::vocab::Expected< void, E >::has_value ( ) const -> bool
inlineconstexpr

◆ operator bool()

template<typename E>
di::vocab::Expected< void, E >::operator bool ( ) const
inlineexplicitconstexpr

◆ operator*()

template<typename E>
void di::vocab::Expected< void, E >::operator* ( ) const
inlineconstexpr

◆ operator=() [1/5]

template<typename E>
auto di::vocab::Expected< void, E >::operator= ( Expected< void, E > && ) -> Expected &requires(concepts::MoveConstructible< E >)=default
constexprdefault

◆ operator=() [2/5]

template<typename E>
auto di::vocab::Expected< void, E >::operator= ( Expected< void, E > const & ) -> Expected &requires(!concepts::CopyConstructible< E >)=delete
constexprdelete

◆ operator=() [3/5]

template<typename E>
auto di::vocab::Expected< void, E >::operator= ( Expected< void, E > const & ) -> Expected &requires(concepts::CopyConstructible< E >)=default
constexprdefault

◆ operator=() [4/5]

template<typename E>
template<typename G>
requires (concepts::ConstructibleFrom<E, G>)
auto di::vocab::Expected< void, E >::operator= ( Unexpected< G > && error) -> Expected&
inlineconstexpr

◆ operator=() [5/5]

template<typename E>
template<typename G>
requires (concepts::ConstructibleFrom<E, G const&>)
auto di::vocab::Expected< void, E >::operator= ( Unexpected< G > const & error) -> Expected&
inlineconstexpr

◆ value() [1/2]

template<typename E>
void di::vocab::Expected< void, E >::value ( ) &&
inlineconstexpr

◆ value() [2/2]

template<typename E>
void di::vocab::Expected< void, E >::value ( ) const &
inlineconstexpr

Friends And Related Symbol Documentation

◆ Expected

template<typename E>
template<typename U, typename G>
friend class Expected
friend

◆ operator== [1/2]

template<typename E>
template<concepts::EqualityComparableWith< E > G>
friend auto operator== ( Expected< void, E > const & a,
Expected< void, G > const & b ) -> bool
friend

◆ operator== [2/2]

template<typename E>
template<concepts::EqualityComparableWith< E > G>
friend auto operator== ( Expected< void, E > const & a,
Unexpected< G > const & b ) -> bool
friend

◆ tag_invoke [1/5]

template<typename E>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename R = meta::InvokeResult<F>>
requires (concepts::Expected<R> && concepts::ConvertibleTo<meta::Like<Self, E>, meta::ExpectedError<R>>)
friend auto tag_invoke ( types::Tag< function::monad::bind > ,
Self && self,
F && function ) -> R
friend

◆ tag_invoke [2/5]

template<typename E>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename R = meta::InvokeResult<F, meta::Like<Self, E>>>
requires (concepts::Expected<R> && concepts::LanguageVoid<meta::ExpectedValue<R>>)
friend auto tag_invoke ( types::Tag< function::monad::fail > ,
Self && self,
F && function ) -> R
friend

◆ tag_invoke [3/5]

template<typename E>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename U = meta::UnwrapRefDecay<meta::InvokeResult<F>>>
requires (concepts::ConstructibleFrom<E, meta::Like<Self, E>>)
friend auto tag_invoke ( types::Tag< function::monad::fmap > ,
Self && self,
F && function ) -> Expected<U, E>
friend

◆ tag_invoke [4/5]

template<typename E>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F, typename G = meta::UnwrapRefDecay<meta::InvokeResult<F, meta::Like<Self, E>>>>
friend auto tag_invoke ( types::Tag< function::monad::fmap_right > ,
Self && self,
F && function ) -> Expected<void, G>
friend

◆ tag_invoke [5/5]

template<typename E>
friend void tag_invoke ( types::Tag< util::swap > ,
Expected< void, E > & a,
Expected< void, E > & b )
friend

Member Data Documentation

◆ other [1/2]

template<typename E>
F const& di::vocab::Expected< void, E >::other

◆ other [2/2]

template<typename E>
F const F &&concepts::detail::ExpectedCanConvertConstructor< void, E, void, F > constexpr F&& di::vocab::Expected< void, E >::other

The documentation for this class was generated from the following file: