YACLib
C++ library for concurrent tasks execution
Loading...
Searching...
No Matches
yaclib::Result< ValueT > Class Template Reference

Encapsulated return value from caller. More...

#include <result.hpp>

Inheritance diagram for yaclib::Result< ValueT >:
[legend]

Public Member Functions

 Result () noexcept
 
 Result (StopTag) noexcept
 
 Result (std::exception_ptr error) noexcept
 
template<typename... Args>
 Result (std::in_place_t, Args &&... args) noexcept(std::is_nothrow_constructible_v< V, Args &&... >)
 
template<typename... Args, typename = std::enable_if_t<(sizeof...(Args) > 1) || !(std::is_same_v<std::decay_t<head_t<Args&&...>>, Result> || std::is_same_v<std::decay_t<head_t<Args&&...>>, std::exception_ptr> || std::is_same_v<std::decay_t<head_t<Args&&...>>, StopTag> || std::is_same_v<std::decay_t<head_t<Args&&...>>, std::in_place_t>)>>
 Result (Args &&... args) noexcept(std::is_nothrow_constructible_v< V, Args &&... >)
 
 Result (const Result &other) noexcept(std::is_nothrow_copy_constructible_v< V >)
 
 Result (Result &&other) noexcept(std::is_nothrow_move_constructible_v< V >)
 
Resultoperator= (const Result &other) noexcept(std::is_nothrow_copy_constructible_v< V > &&std::is_nothrow_copy_assignable_v< V >)
 
Resultoperator= (Result &&other) noexcept(std::is_nothrow_move_constructible_v< V > &&std::is_nothrow_move_assignable_v< V >)
 
template<typename Arg , typename = std::enable_if_t<!std::is_same_v<std::decay_t<Arg>, Result>>>
Resultoperator= (Arg &&arg)
 
 ~Result () noexcept
 
 operator bool () const noexcept
 
void Ok () &=delete
 
void Ok () const &&=delete
 
void Value () &=delete
 
void Value () const &&=delete
 
void Error () &=delete
 
void Error () const &&=delete
 
V && Ok () &&
 
const V & Ok () const &
 
V && Value () &&noexcept
 
const V & Value () const &noexcept
 
const std::exception_ptr & Error () &&noexcept
 
const std::exception_ptr & Error () const &noexcept
 

Detailed Description

template<typename ValueT>
class yaclib::Result< ValueT >

Encapsulated return value from caller.

Either a value of type V or a std::exception_ptr. Default constructed Result contains the stop error,

See also
StopPtr
Template Parameters
ValueTtype of value that stored in Result
Examples
simple.cpp.

Definition at line 52 of file result.hpp.

Constructor & Destructor Documentation

◆ Result() [1/7]

template<typename ValueT >
yaclib::Result< ValueT >::Result ( )
inlinenoexcept

Definition at line 68 of file result.hpp.

References yaclib::StopPtr().

◆ Result() [2/7]

template<typename ValueT >
yaclib::Result< ValueT >::Result ( StopTag  )
inlinenoexcept

Definition at line 71 of file result.hpp.

References yaclib::StopPtr().

◆ Result() [3/7]

template<typename ValueT >
yaclib::Result< ValueT >::Result ( std::exception_ptr  error)
inlinenoexcept

Definition at line 74 of file result.hpp.

◆ Result() [4/7]

template<typename ValueT >
template<typename... Args>
yaclib::Result< ValueT >::Result ( std::in_place_t  ,
Args &&...  args 
)
inlineexplicitnoexcept

Definition at line 83 of file result.hpp.

References yaclib::MakeContract().

◆ Result() [5/7]

template<typename ValueT >
template<typename... Args, typename = std::enable_if_t<(sizeof...(Args) > 1) || !(std::is_same_v<std::decay_t<head_t<Args&&...>>, Result> || std::is_same_v<std::decay_t<head_t<Args&&...>>, std::exception_ptr> || std::is_same_v<std::decay_t<head_t<Args&&...>>, StopTag> || std::is_same_v<std::decay_t<head_t<Args&&...>>, std::in_place_t>)>>
yaclib::Result< ValueT >::Result ( Args &&...  args)
inlinenoexcept

Definition at line 93 of file result.hpp.

◆ Result() [6/7]

template<typename ValueT >
yaclib::Result< ValueT >::Result ( const Result< ValueT > &  other)
inlinenoexcept

Definition at line 98 of file result.hpp.

References yaclib::MakeContract().

◆ Result() [7/7]

template<typename ValueT >
yaclib::Result< ValueT >::Result ( Result< ValueT > &&  other)
inlinenoexcept

Definition at line 104 of file result.hpp.

References yaclib::MakeContract().

◆ ~Result()

template<typename ValueT >
yaclib::Result< ValueT >::~Result ( )
inlinenoexcept

Definition at line 156 of file result.hpp.

Member Function Documentation

◆ Error() [1/4]

template<typename ValueT >
const std::exception_ptr & yaclib::Result< ValueT >::Error ( ) &&
inlinenoexcept

Definition at line 195 of file result.hpp.

References YACLIB_ASSERT.

◆ Error() [2/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Error ( ) &
delete

◆ Error() [3/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Error ( ) const &&
delete

◆ Error() [4/4]

template<typename ValueT >
const std::exception_ptr & yaclib::Result< ValueT >::Error ( ) const &
inlinenoexcept

Definition at line 199 of file result.hpp.

References YACLIB_ASSERT.

◆ Ok() [1/4]

template<typename ValueT >
V && yaclib::Result< ValueT >::Ok ( ) &&
inline

Definition at line 173 of file result.hpp.

◆ Ok() [2/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Ok ( ) &
delete

◆ Ok() [3/4]

template<typename ValueT >
const V & yaclib::Result< ValueT >::Ok ( ) const &
inline

Definition at line 179 of file result.hpp.

◆ Ok() [4/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Ok ( ) const &&
delete

◆ operator bool()

template<typename ValueT >
yaclib::Result< ValueT >::operator bool ( ) const
inlineexplicitnoexcept

Definition at line 162 of file result.hpp.

◆ operator=() [1/3]

template<typename ValueT >
template<typename Arg , typename = std::enable_if_t<!std::is_same_v<std::decay_t<Arg>, Result>>>
Result & yaclib::Result< ValueT >::operator= ( Arg &&  arg)
inline

Definition at line 151 of file result.hpp.

References yaclib::MakeContract().

◆ operator=() [2/3]

template<typename ValueT >
Result & yaclib::Result< ValueT >::operator= ( const Result< ValueT > &  other)
inlinenoexcept

Definition at line 110 of file result.hpp.

References yaclib::MakeContract().

◆ operator=() [3/3]

template<typename ValueT >
Result & yaclib::Result< ValueT >::operator= ( Result< ValueT > &&  other)
inlinenoexcept

Definition at line 130 of file result.hpp.

References yaclib::MakeContract().

◆ Value() [1/4]

template<typename ValueT >
V && yaclib::Result< ValueT >::Value ( ) &&
inlinenoexcept

Definition at line 186 of file result.hpp.

References YACLIB_ASSERT.

◆ Value() [2/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Value ( ) &
delete

◆ Value() [3/4]

template<typename ValueT >
void yaclib::Result< ValueT >::Value ( ) const &&
delete

◆ Value() [4/4]

template<typename ValueT >
const V & yaclib::Result< ValueT >::Value ( ) const &
inlinenoexcept

Definition at line 190 of file result.hpp.

References YACLIB_ASSERT.


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