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

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

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

Public Types

using Value = T
 
using Error = void
 

Public Member Functions

constexpr Expected ()=default
 
constexpr Expected (Expected const &)=delete
 
constexpr Expected (Expected const &)=default
 
constexpr Expected (Expected &&)=default
 
template<typename U>
requires (concepts::ConstructibleFrom<T, U const&> && concepts::detail::ExpectedCanConvertConstructor<T, void, U, void>)
constexpr explicit (!concepts::ConvertibleTo< U const &, T >) Expected(Expected< U
 
constexpr void const U &&concepts::detail::ExpectedCanConvertConstructor< T, void, U, void > constexpr explicit (!concepts::ConvertibleTo< U, T >) Expected(Expected< U
 
constexpr void const U &&concepts::detail::ExpectedCanConvertConstructor< T, void, U, void > constexpr void types::InPlace &&!concepts ::RemoveCVRefSameAs< U, Expected > &&!concepts ::Unexpected< U > &&concepts::ConstructibleFrom< T, U > constexpr explicit (!concepts::ConvertibleTo< U, T >) Expected(U &&value)
 
template<typename... Args>
requires (concepts::ConstructibleFrom<T, Args...>)
constexpr Expected (types::InPlace, Args &&... args)
 
template<typename U, typename... Args>
requires (concepts::ConstructibleFrom<T, std::initializer_list<U>, Args...>)
constexpr Expected (types::InPlace, std::initializer_list< U > list, Args &&... args)
 
constexpr ~Expected ()=default
 
constexpr auto operator= (Expected const &) -> Expected &requires(!concepts::CopyConstructible< T >)=delete
 
constexpr auto operator= (Expected const &) -> Expected &requires(concepts::CopyConstructible< T >)=default
 
constexpr auto operator= (Expected &&) -> Expected &requires(concepts::MoveConstructible< T >)=default
 
template<typename U = T>
requires (!concepts::RemoveCVRefSameAs<Expected, U> && !concepts::Unexpected<U> && concepts::ConstructibleFrom<T, U>)
constexpr auto operator= (U &&value) -> Expected &
 
constexpr auto operator-> ()
 
constexpr auto operator-> () const
 
constexpr auto operator* () &-> T &
 
constexpr auto operator* () const &-> T const &
 
constexpr auto operator* () &&-> T &&
 
constexpr auto operator* () const &&-> T const &&
 
constexpr operator bool () const
 
constexpr auto has_value () const -> bool
 
constexpr auto value () &-> T &
 
constexpr auto value () const &-> T const &
 
constexpr auto value () &&-> T &&
 
constexpr auto value () const &&-> T const &&
 
constexpr void error () const &
 
constexpr void error () &&
 
template<concepts::ConvertibleTo< T > U>
requires (concepts::CopyConstructible<T>)
constexpr auto value_or (U &&) const &-> T
 
template<concepts::ConvertibleTo< T > U>
requires (concepts::MoveConstructible<T>)
constexpr auto value_or (U &&) &&-> T
 
constexpr auto optional_value () const
 
template<typename... Args>
requires (concepts::ConstructibleFrom<T, Args...>)
constexpr auto emplace (Args &&... args) -> T &
 
template<typename U, typename... Args>
requires (concepts::ConstructibleFrom<T, std::initializer_list<U>, Args...>)
constexpr auto emplace (std::initializer_list< U > list, Args &&... args) -> T &
 
auto __try_did_fail () &&-> Expected
 
constexpr auto __try_did_succeed () &&-> Expected
 
constexpr auto __try_move_out () &&-> T &&
 
- Public Member Functions inherited from di::function::monad::MonadInterface< Expected< T, void > >
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 void const & other: m_value(other.value()) {} template<typename U> requires(concepts::ConstructibleFrom<T
 
constexpr void const U &&concepts::detail::ExpectedCanConvertConstructor< T, void, U, void > constexpr void && other: m_value(util::move(other).value()) {} template<typename U = T> requires(!concepts::RemoveCVRefSameAs<U
 

Friends

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

Member Typedef Documentation

◆ Error

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

◆ Value

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

Constructor & Destructor Documentation

◆ Expected() [1/6]

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

◆ Expected() [2/6]

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

◆ Expected() [3/6]

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

◆ Expected() [4/6]

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

◆ Expected() [5/6]

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

◆ Expected() [6/6]

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

◆ ~Expected()

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

Member Function Documentation

◆ __try_did_fail()

template<typename T>
auto di::vocab::Expected< T, void >::__try_did_fail ( ) && -> Expected
inline

◆ __try_did_succeed()

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

◆ __try_move_out()

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

◆ emplace() [1/2]

template<typename T>
template<typename... Args>
requires (concepts::ConstructibleFrom<T, Args...>)
auto di::vocab::Expected< T, void >::emplace ( Args &&... args) -> T&
inlineconstexpr

◆ emplace() [2/2]

template<typename T>
template<typename U, typename... Args>
requires (concepts::ConstructibleFrom<T, std::initializer_list<U>, Args...>)
auto di::vocab::Expected< T, void >::emplace ( std::initializer_list< U > list,
Args &&... args ) -> T&
inlineconstexpr

◆ error() [1/2]

template<typename T>
void di::vocab::Expected< T, void >::error ( ) &&
inlineconstexpr

◆ error() [2/2]

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

◆ explicit() [1/3]

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

◆ explicit() [2/3]

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

◆ explicit() [3/3]

template<typename T>
void const U &&concepts::detail::ExpectedCanConvertConstructor< T, void, U, void > constexpr void types::InPlace &&!concepts ::RemoveCVRefSameAs< U, Expected > &&!concepts ::Unexpected< U > &&concepts::ConstructibleFrom< T, U > constexpr di::vocab::Expected< T, void >::explicit ( !concepts::ConvertibleTo< U, T > ) &&
inlineconstexpr

◆ has_value()

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

◆ operator bool()

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

◆ operator*() [1/4]

template<typename T>
auto di::vocab::Expected< T, void >::operator* ( ) && -> T&&
inlineconstexpr

◆ operator*() [2/4]

template<typename T>
auto di::vocab::Expected< T, void >::operator* ( ) & -> T&
inlineconstexpr

◆ operator*() [3/4]

template<typename T>
auto di::vocab::Expected< T, void >::operator* ( ) const && -> T const&&
inlineconstexpr

◆ operator*() [4/4]

template<typename T>
auto di::vocab::Expected< T, void >::operator* ( ) const & -> T const&
inlineconstexpr

◆ operator->() [1/2]

template<typename T>
auto di::vocab::Expected< T, void >::operator-> ( )
inlineconstexpr

◆ operator->() [2/2]

template<typename T>
auto di::vocab::Expected< T, void >::operator-> ( ) const
inlineconstexpr

◆ operator=() [1/4]

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

◆ operator=() [2/4]

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

◆ operator=() [3/4]

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

◆ operator=() [4/4]

template<typename T>
template<typename U = T>
requires (!concepts::RemoveCVRefSameAs<Expected, U> && !concepts::Unexpected<U> && concepts::ConstructibleFrom<T, U>)
auto di::vocab::Expected< T, void >::operator= ( U && value) -> Expected&
inlineconstexpr

◆ optional_value()

template<typename T>
auto di::vocab::Expected< T, void >::optional_value ( ) const
inlineconstexpr

◆ value() [1/4]

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

◆ value() [2/4]

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

◆ value() [3/4]

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

◆ value() [4/4]

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

◆ value_or() [1/2]

template<typename T>
template<concepts::ConvertibleTo< T > U>
requires (concepts::MoveConstructible<T>)
auto di::vocab::Expected< T, void >::value_or ( U && ) && -> T
inlineconstexpr

◆ value_or() [2/2]

template<typename T>
template<concepts::ConvertibleTo< T > U>
requires (concepts::CopyConstructible<T>)
auto di::vocab::Expected< T, void >::value_or ( U && ) const & -> T
inlineconstexpr

Friends And Related Symbol Documentation

◆ Expected

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

◆ operator== [1/3]

template<typename T>
template<typename G>
friend auto operator== ( Expected< T, void > const & ,
Unexpected< G > const &  ) -> bool
friend

◆ operator== [2/3]

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

◆ operator== [3/3]

template<typename T>
template<typename U>
requires (meta::ExpectedRank<U> < meta::ExpectedRank<Expected> && concepts::EqualityComparableWith<T, U>)
friend auto operator== ( Expected< T, void > const & a,
U const & b ) -> bool
friend

◆ tag_invoke [1/5]

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

◆ tag_invoke [2/5]

template<typename T>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F>
requires (concepts::ConstructibleFrom<Expected, Self>)
friend auto tag_invoke ( types::Tag< function::monad::fail > ,
Self && self,
F &&  ) -> Expected
friend

◆ tag_invoke [3/5]

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

◆ tag_invoke [4/5]

template<typename T>
template<concepts::RemoveCVRefSameAs< Expected > Self, typename F>
requires (concepts::ConstructibleFrom<Expected, Self>)
friend auto tag_invoke ( types::Tag< function::monad::fmap_right > ,
Self && self,
F &&  ) -> Expected
friend

◆ tag_invoke [5/5]

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

Member Data Documentation

◆ other [1/2]

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

◆ other [2/2]

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

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