ThreadSchedule 3.0.0
Modern C++ thread management library
Loading...
Searching...
No Matches
threadschedule::expected< T, E > Class Template Reference

#include <expected.hpp>

Public Types

using value_type = T
 
using error_type = E
 
using unexpected_type = unexpected< E >
 

Public Member Functions

template<typename U = T, std::enable_if_t< std::is_default_constructible_v< U >, int > = 0>
constexpr expected ()
 
template<typename U = T, std::enable_if_t<!std::is_default_constructible_v< U >, int > = 0>
 expected ()=delete
 
 expected (expected const &)=default
 
 expected (expected &&)=default
 
auto operator= (expected const &) -> expected &=default
 
auto operator= (expected &&) -> expected &=default
 
 ~expected ()=default
 
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&!std::is_same_v< std::decay_t< U >, std::in_place_t > &&!std::is_same_v< std::decay_t< U >, unexpected< E > > &&std::is_constructible_v< T, U > &&std::is_convertible_v< U, T >, int > = 0>
constexpr expected (U &&value)
 
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&!std::is_same_v< std::decay_t< U >, std::in_place_t > &&!std::is_same_v< std::decay_t< U >, unexpected< E > > &&std::is_constructible_v< T, U > &&!std::is_convertible_v< U, T >, int > = 0>
constexpr expected (U &&value)
 
template<typename... Args, std::enable_if_t< std::is_constructible_v< T, Args... >, int > = 0>
constexpr expected (std::in_place_t, Args &&... args)
 
constexpr expected (unexpected< E > const &error)
 
constexpr expected (unexpected< E > &&error)
 
template<typename... Args, std::enable_if_t< std::is_constructible_v< E, Args... >, int > = 0>
constexpr expected (unexpect_t, Args &&... args)
 
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&std::is_constructible_v< T, U > &&std::is_assignable_v< T &, U > &&(std::is_nothrow_constructible_v< T, U >||std::is_nothrow_move_constructible_v< T >||std::is_nothrow_move_constructible_v< E >), int > = 0>
auto operator= (U &&value) -> expected &
 
template<typename G , std::enable_if_t< std::is_constructible_v< E, G const & > &&std::is_assignable_v< E &, G const & > &&(std::is_nothrow_constructible_v< E, G const & >||std::is_nothrow_move_constructible_v< E >||std::is_nothrow_move_constructible_v< T >), int > = 0>
auto operator= (unexpected< G > const &error) -> expected &
 
template<typename G , std::enable_if_t< std::is_constructible_v< E, G > &&std::is_assignable_v< E &, G > &&(std::is_nothrow_constructible_v< E, G >||std::is_nothrow_move_constructible_v< E >||std::is_nothrow_move_constructible_v< T >), int > = 0>
auto operator= (unexpected< G > &&error) -> expected &
 
constexpr auto has_value () const noexcept -> bool
 
constexpr operator bool () const noexcept
 
constexpr auto operator-> () noexcept -> T *
 
constexpr auto operator-> () const noexcept -> T const *
 
constexpr auto operator* () &noexcept -> T &
 
constexpr auto operator* () const &noexcept -> T const &
 
constexpr auto operator* () &&noexcept -> T &&
 
constexpr auto operator* () const &&noexcept -> T const &&
 
auto value () &-> T &
 
auto value () const &-> T const &
 
auto value () &&-> T &&
 
auto value () const &&-> T const &&
 
constexpr auto error () &noexcept -> E &
 
constexpr auto error () const &noexcept -> E const &
 
constexpr auto error () &&noexcept -> E &&
 
constexpr auto error () const &&noexcept -> E const &&
 
template<typename U >
auto value_or (U &&fallback) const &-> T
 
template<typename U >
auto value_or (U &&fallback) &&-> T
 
template<typename... Args, std::enable_if_t< std::is_nothrow_constructible_v< T, Args... >, int > = 0>
auto emplace (Args &&... args) noexcept -> T &
 
void swap (expected &other) noexcept(std::is_nothrow_move_constructible_v< T > &&std::is_nothrow_move_constructible_v< E > &&std::is_nothrow_swappable_v< T > &&std::is_nothrow_swappable_v< E >)
 
template<typename F >
auto and_then (F &&f) &
 
template<typename F >
auto and_then (F &&f) const &
 
template<typename F >
auto and_then (F &&f) &&
 
template<typename F >
auto and_then (F &&f) const &&
 
template<typename F >
auto or_else (F &&f) &
 
template<typename F >
auto or_else (F &&f) const &
 
template<typename F >
auto or_else (F &&f) &&
 
template<typename F >
auto or_else (F &&f) const &&
 
template<typename F >
auto transform (F &&f) &
 
template<typename F >
auto transform (F &&f) const &
 
template<typename F >
auto transform (F &&f) &&
 
template<typename F >
auto transform (F &&f) const &&
 
template<typename F >
auto transform_error (F &&f) &
 
template<typename F >
auto transform_error (F &&f) const &
 
template<typename F >
auto transform_error (F &&f) &&
 
template<typename F >
auto transform_error (F &&f) const &&
 

Friends

template<typename T2 , typename E2 >
auto operator== (expected const &lhs, expected< T2, E2 > const &rhs) -> bool
 
template<typename T2 , typename E2 >
auto operator!= (expected const &lhs, expected< T2, E2 > const &rhs) -> bool
 
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator== (expected const &lhs, T2 const &rhs) -> bool
 
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator== (T2 const &lhs, expected const &rhs) -> bool
 
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator!= (expected const &lhs, T2 const &rhs) -> bool
 
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator!= (T2 const &lhs, expected const &rhs) -> bool
 
template<typename E2 >
auto operator== (expected const &lhs, unexpected< E2 > const &rhs) -> bool
 
template<typename E2 >
auto operator== (unexpected< E2 > const &lhs, expected const &rhs) -> bool
 
template<typename E2 >
auto operator!= (expected const &lhs, unexpected< E2 > const &rhs) -> bool
 
template<typename E2 >
auto operator!= (unexpected< E2 > const &lhs, expected const &rhs) -> bool
 

Detailed Description

template<typename T, typename E>
class threadschedule::expected< T, E >

Definition at line 514 of file expected.hpp.

Member Typedef Documentation

◆ error_type

template<typename T , typename E >
using threadschedule::expected< T, E >::error_type = E

Definition at line 518 of file expected.hpp.

◆ unexpected_type

template<typename T , typename E >
using threadschedule::expected< T, E >::unexpected_type = unexpected<E>

Definition at line 519 of file expected.hpp.

◆ value_type

template<typename T , typename E >
using threadschedule::expected< T, E >::value_type = T

Definition at line 517 of file expected.hpp.

Constructor & Destructor Documentation

◆ expected() [1/10]

template<typename T , typename E >
template<typename U = T, std::enable_if_t< std::is_default_constructible_v< U >, int > = 0>
constexpr threadschedule::expected< T, E >::expected ( )
inlineconstexpr

Definition at line 522 of file expected.hpp.

◆ expected() [2/10]

template<typename T , typename E >
template<typename U = T, std::enable_if_t<!std::is_default_constructible_v< U >, int > = 0>
threadschedule::expected< T, E >::expected ( )
delete

◆ expected() [3/10]

template<typename T , typename E >
threadschedule::expected< T, E >::expected ( expected< T, E > const &  )
default

◆ expected() [4/10]

template<typename T , typename E >
threadschedule::expected< T, E >::expected ( expected< T, E > &&  )
default

◆ ~expected()

template<typename T , typename E >
threadschedule::expected< T, E >::~expected ( )
default

◆ expected() [5/10]

template<typename T , typename E >
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&!std::is_same_v< std::decay_t< U >, std::in_place_t > &&!std::is_same_v< std::decay_t< U >, unexpected< E > > &&std::is_constructible_v< T, U > &&std::is_convertible_v< U, T >, int > = 0>
constexpr threadschedule::expected< T, E >::expected ( U &&  value)
inlineconstexpr

Definition at line 539 of file expected.hpp.

◆ expected() [6/10]

template<typename T , typename E >
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&!std::is_same_v< std::decay_t< U >, std::in_place_t > &&!std::is_same_v< std::decay_t< U >, unexpected< E > > &&std::is_constructible_v< T, U > &&!std::is_convertible_v< U, T >, int > = 0>
constexpr threadschedule::expected< T, E >::expected ( U &&  value)
inlineexplicitconstexpr

Definition at line 547 of file expected.hpp.

◆ expected() [7/10]

template<typename T , typename E >
template<typename... Args, std::enable_if_t< std::is_constructible_v< T, Args... >, int > = 0>
constexpr threadschedule::expected< T, E >::expected ( std::in_place_t  ,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 551 of file expected.hpp.

◆ expected() [8/10]

template<typename T , typename E >
constexpr threadschedule::expected< T, E >::expected ( unexpected< E > const &  error)
inlineconstexpr

Definition at line 555 of file expected.hpp.

◆ expected() [9/10]

template<typename T , typename E >
constexpr threadschedule::expected< T, E >::expected ( unexpected< E > &&  error)
inlineconstexpr

Definition at line 556 of file expected.hpp.

◆ expected() [10/10]

template<typename T , typename E >
template<typename... Args, std::enable_if_t< std::is_constructible_v< E, Args... >, int > = 0>
constexpr threadschedule::expected< T, E >::expected ( unexpect_t  ,
Args &&...  args 
)
inlineexplicitconstexpr

Definition at line 558 of file expected.hpp.

Member Function Documentation

◆ and_then() [1/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::and_then ( F &&  f) &
inline

Definition at line 715 of file expected.hpp.

◆ and_then() [2/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::and_then ( F &&  f) &&
inline

Definition at line 727 of file expected.hpp.

◆ and_then() [3/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::and_then ( F &&  f) const &
inline

Definition at line 721 of file expected.hpp.

◆ and_then() [4/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::and_then ( F &&  f) const &&
inline

Definition at line 733 of file expected.hpp.

◆ emplace()

template<typename T , typename E >
template<typename... Args, std::enable_if_t< std::is_nothrow_constructible_v< T, Args... >, int > = 0>
auto threadschedule::expected< T, E >::emplace ( Args &&...  args) -> T&
inlinenoexcept

Definition at line 702 of file expected.hpp.

◆ error() [1/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::error ( ) && -> E&&
inlineconstexprnoexcept

Definition at line 678 of file expected.hpp.

◆ error() [2/4]

◆ error() [3/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::error ( ) const && -> E const&&
inlineconstexprnoexcept

Definition at line 683 of file expected.hpp.

◆ error() [4/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::error ( ) const & -> E const&
inlineconstexprnoexcept

Definition at line 673 of file expected.hpp.

◆ has_value()

◆ operator bool()

template<typename T , typename E >
constexpr threadschedule::expected< T, E >::operator bool ( ) const
inlineexplicitconstexprnoexcept

Definition at line 604 of file expected.hpp.

References threadschedule::expected< T, E >::has_value().

◆ operator*() [1/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator* ( ) && -> T&&
inlineconstexprnoexcept

Definition at line 629 of file expected.hpp.

◆ operator*() [2/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator* ( ) & -> T&
inlineconstexprnoexcept

Definition at line 619 of file expected.hpp.

◆ operator*() [3/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator* ( ) const && -> T const&&
inlineconstexprnoexcept

Definition at line 634 of file expected.hpp.

◆ operator*() [4/4]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator* ( ) const & -> T const&
inlineconstexprnoexcept

Definition at line 624 of file expected.hpp.

◆ operator->() [1/2]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator-> ( ) const -> T const*
inlineconstexprnoexcept

Definition at line 614 of file expected.hpp.

◆ operator->() [2/2]

template<typename T , typename E >
constexpr auto threadschedule::expected< T, E >::operator-> ( ) -> T*
inlineconstexprnoexcept

Definition at line 609 of file expected.hpp.

◆ operator=() [1/5]

template<typename T , typename E >
auto threadschedule::expected< T, E >::operator= ( expected< T, E > &&  ) -> expected &=default
default

◆ operator=() [2/5]

template<typename T , typename E >
auto threadschedule::expected< T, E >::operator= ( expected< T, E > const &  ) -> expected &=default
default

◆ operator=() [3/5]

template<typename T , typename E >
template<typename U = T, std::enable_if_t<!std::is_same_v< std::decay_t< U >, expected > &&std::is_constructible_v< T, U > &&std::is_assignable_v< T &, U > &&(std::is_nothrow_constructible_v< T, U >||std::is_nothrow_move_constructible_v< T >||std::is_nothrow_move_constructible_v< E >), int > = 0>
auto threadschedule::expected< T, E >::operator= ( U &&  value) -> expected&
inline

Definition at line 570 of file expected.hpp.

References threadschedule::expected< T, E >::value().

◆ operator=() [4/5]

template<typename T , typename E >
template<typename G , std::enable_if_t< std::is_constructible_v< E, G > &&std::is_assignable_v< E &, G > &&(std::is_nothrow_constructible_v< E, G >||std::is_nothrow_move_constructible_v< E >||std::is_nothrow_move_constructible_v< T >), int > = 0>
auto threadschedule::expected< T, E >::operator= ( unexpected< G > &&  error) -> expected&
inline

Definition at line 592 of file expected.hpp.

References threadschedule::expected< T, E >::error().

◆ operator=() [5/5]

template<typename T , typename E >
template<typename G , std::enable_if_t< std::is_constructible_v< E, G const & > &&std::is_assignable_v< E &, G const & > &&(std::is_nothrow_constructible_v< E, G const & >||std::is_nothrow_move_constructible_v< E >||std::is_nothrow_move_constructible_v< T >), int > = 0>
auto threadschedule::expected< T, E >::operator= ( unexpected< G > const &  error) -> expected&
inline

Definition at line 581 of file expected.hpp.

References threadschedule::expected< T, E >::error().

◆ or_else() [1/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::or_else ( F &&  f) &
inline

Definition at line 739 of file expected.hpp.

◆ or_else() [2/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::or_else ( F &&  f) &&
inline

Definition at line 751 of file expected.hpp.

◆ or_else() [3/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::or_else ( F &&  f) const &
inline

Definition at line 745 of file expected.hpp.

◆ or_else() [4/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::or_else ( F &&  f) const &&
inline

Definition at line 757 of file expected.hpp.

◆ swap()

template<typename T , typename E >
void threadschedule::expected< T, E >::swap ( expected< T, E > &  other)
inlinenoexcept

Definition at line 707 of file expected.hpp.

◆ transform() [1/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform ( F &&  f) &
inline

Definition at line 763 of file expected.hpp.

◆ transform() [2/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform ( F &&  f) &&
inline

Definition at line 775 of file expected.hpp.

◆ transform() [3/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform ( F &&  f) const &
inline

Definition at line 769 of file expected.hpp.

◆ transform() [4/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform ( F &&  f) const &&
inline

Definition at line 781 of file expected.hpp.

◆ transform_error() [1/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform_error ( F &&  f) &
inline

Definition at line 787 of file expected.hpp.

◆ transform_error() [2/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform_error ( F &&  f) &&
inline

Definition at line 799 of file expected.hpp.

◆ transform_error() [3/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform_error ( F &&  f) const &
inline

Definition at line 793 of file expected.hpp.

◆ transform_error() [4/4]

template<typename T , typename E >
template<typename F >
auto threadschedule::expected< T, E >::transform_error ( F &&  f) const &&
inline

Definition at line 805 of file expected.hpp.

◆ value() [1/4]

template<typename T , typename E >
auto threadschedule::expected< T, E >::value ( ) && -> T&&
inline

◆ value() [2/4]

◆ value() [3/4]

template<typename T , typename E >
auto threadschedule::expected< T, E >::value ( ) const && -> T const&&
inline

◆ value() [4/4]

template<typename T , typename E >
auto threadschedule::expected< T, E >::value ( ) const & -> T const&
inline

◆ value_or() [1/2]

template<typename T , typename E >
template<typename U >
auto threadschedule::expected< T, E >::value_or ( U &&  fallback) && -> T
inline

Definition at line 696 of file expected.hpp.

References threadschedule::expected< T, E >::has_value().

◆ value_or() [2/2]

template<typename T , typename E >
template<typename U >
auto threadschedule::expected< T, E >::value_or ( U &&  fallback) const & -> T
inline

Definition at line 690 of file expected.hpp.

References threadschedule::expected< T, E >::has_value().

Friends And Related Symbol Documentation

◆ operator!= [1/5]

template<typename T , typename E >
template<typename T2 , typename E2 >
auto operator!= ( expected< T, E > const &  lhs,
expected< T2, E2 > const &  rhs 
) -> bool
friend

Definition at line 839 of file expected.hpp.

◆ operator!= [2/5]

template<typename T , typename E >
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator!= ( expected< T, E > const &  lhs,
T2 const &  rhs 
) -> bool
friend

Definition at line 857 of file expected.hpp.

◆ operator!= [3/5]

template<typename T , typename E >
template<typename E2 >
auto operator!= ( expected< T, E > const &  lhs,
unexpected< E2 > const &  rhs 
) -> bool
friend

Definition at line 881 of file expected.hpp.

◆ operator!= [4/5]

template<typename T , typename E >
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator!= ( T2 const &  lhs,
expected< T, E > const &  rhs 
) -> bool
friend

Definition at line 863 of file expected.hpp.

◆ operator!= [5/5]

template<typename T , typename E >
template<typename E2 >
auto operator!= ( unexpected< E2 > const &  lhs,
expected< T, E > const &  rhs 
) -> bool
friend

Definition at line 887 of file expected.hpp.

◆ operator== [1/5]

template<typename T , typename E >
template<typename T2 , typename E2 >
auto operator== ( expected< T, E > const &  lhs,
expected< T2, E2 > const &  rhs 
) -> bool
friend

Definition at line 831 of file expected.hpp.

◆ operator== [2/5]

template<typename T , typename E >
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator== ( expected< T, E > const &  lhs,
T2 const &  rhs 
) -> bool
friend

Definition at line 845 of file expected.hpp.

◆ operator== [3/5]

template<typename T , typename E >
template<typename E2 >
auto operator== ( expected< T, E > const &  lhs,
unexpected< E2 > const &  rhs 
) -> bool
friend

Definition at line 869 of file expected.hpp.

◆ operator== [4/5]

template<typename T , typename E >
template<typename T2 , std::enable_if_t<!std::is_same_v< expected, std::decay_t< T2 > >, int > = 0>
auto operator== ( T2 const &  lhs,
expected< T, E > const &  rhs 
) -> bool
friend

Definition at line 851 of file expected.hpp.

◆ operator== [5/5]

template<typename T , typename E >
template<typename E2 >
auto operator== ( unexpected< E2 > const &  lhs,
expected< T, E > const &  rhs 
) -> bool
friend

Definition at line 875 of file expected.hpp.


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