|
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, detail::void_or< T, std::is_default_constructible, T > >::value, int > = 0> |
constexpr | expected () |
|
constexpr | expected (const expected &other)=default |
|
constexpr | expected (expected &&other)=default |
|
template<typename U , typename G , std::enable_if_t< conjunction< negation< conjunction< std::is_convertible< std::add_lvalue_reference_t< const U >, T >, std::is_convertible< const G &, E >>>, disjunction< conjunction< std::is_void< T >, std::is_void< U >>, std::is_constructible< T, std::add_lvalue_reference_t< const U >> >, std::is_constructible< E, const G & > >::value, int > = 0> |
constexpr | expected (const expected< U, G > &other) |
|
template<typename U , typename G , std::enable_if_t< conjunction< conjunction< std::is_convertible< std::add_lvalue_reference_t< const U >, T >, std::is_convertible< const G &, E >>, disjunction< conjunction< std::is_void< T >, std::is_void< U >>, std::is_constructible< T, std::add_lvalue_reference_t< const U >> >, std::is_constructible< E, const G & > >::value, int > = 0> |
constexpr | expected (const expected< U, G > &other) |
|
template<typename U , typename G , std::enable_if_t< conjunction< negation< conjunction< std::is_convertible< U, T >, std::is_convertible< G, E >>>, disjunction< conjunction< std::is_void< T >, std::is_void< U >>, std::is_constructible< T, U > >, std::is_constructible< E, G > >::value, int > = 0> |
constexpr | expected (expected< U, G > &&other) |
|
template<typename U , typename G , std::enable_if_t< conjunction< conjunction< std::is_convertible< U, T >, std::is_convertible< G, E >>, disjunction< conjunction< std::is_void< T >, std::is_void< U >>, std::is_constructible< T, U > >, std::is_constructible< E, G > >::value, int > = 0> |
constexpr | expected (expected< U, G > &&other) |
|
template<typename U = T, std::enable_if_t< conjunction< negation< std::is_void< T >>, negation< std::is_same< remove_cvref_t< U >, in_place_t >>, negation< std::is_same< expected, remove_cvref_t< U >>>, std::is_constructible< T, U >, negation< is_specialization< remove_cvref_t< U >, unexpected >>, disjunction< negation< std::is_same< bool, std::remove_cv_t< T >>>, negation< is_specialization< remove_cvref_t< U >, expected >> >, negation< std::is_convertible< U, T >> >::value, int > = 0> |
constexpr | expected (U &&v) |
|
template<typename U = T, std::enable_if_t< conjunction< negation< std::is_void< T >>, negation< std::is_same< remove_cvref_t< U >, in_place_t >>, negation< std::is_same< expected, remove_cvref_t< U >>>, std::is_constructible< T, U >, negation< is_specialization< remove_cvref_t< U >, unexpected >>, disjunction< negation< std::is_same< bool, std::remove_cv_t< T >>>, negation< is_specialization< remove_cvref_t< U >, expected >> >, std::is_convertible< U, T > >::value, int > = 0> |
constexpr | expected (U &&v) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, const G & >, negation< std::is_convertible< const G &, E >> >::value, int > = 0> |
constexpr | expected (const unexpected< G > &e) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, G >, std::is_convertible< const G &, E > >::value, int > = 0> |
constexpr | expected (const unexpected< G > &e) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, G >, negation< std::is_convertible< G, E >> >::value, int > = 0> |
constexpr | expected (unexpected< G > &&e) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, G >, std::is_convertible< G, E > >::value, int > = 0> |
constexpr | expected (unexpected< G > &&e) |
|
template<typename... Args, std::enable_if_t< conjunction< negation< std::is_void< T >>, std::is_constructible< T, Args... > >::value, int > = 0> |
constexpr | expected (in_place_t, Args &&... args) |
|
template<typename U , typename... Args, std::enable_if_t< conjunction< negation< std::is_void< T >>, std::is_constructible< T, std::initializer_list< U > &, Args... > >::value, int > = 0> |
constexpr | expected (in_place_t, std::initializer_list< U > il, Args &&... args) |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr | expected (in_place_t) noexcept |
|
template<typename... Args, std::enable_if_t< std::is_constructible< E, Args... > ::value, int > = 0> |
constexpr | expected (unexpect_t, Args &&... args) |
|
template<typename U , typename... Args, std::enable_if_t< std::is_constructible< E, std::initializer_list< U > &, Args... > ::value, int > = 0> |
constexpr | expected (unexpect_t, std::initializer_list< U > il, Args &&... args) |
|
constexpr expected & | operator= (const expected &)=default |
|
constexpr expected & | operator= (expected &&)=default |
|
template<typename U = T, std::enable_if_t< conjunction< negation< std::is_void< T >>, negation< std::is_same< expected, remove_cvref_t< U >>>, negation< is_specialization< remove_cvref_t< U >, unexpected >>, std::is_constructible< T, U >, std::is_assignable< std::add_lvalue_reference_t< T >, U >, disjunction< std::is_nothrow_constructible< T, U >, std::is_nothrow_move_constructible< T >, std::is_nothrow_move_constructible< E > > >::value, int > = 0> |
constexpr expected & | operator= (U &&v) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, const G & >, std::is_assignable< E &, const G & >, disjunction< std::is_void< T >, std::is_nothrow_constructible< E, const G & >, std::is_nothrow_move_constructible< T >, std::is_nothrow_move_constructible< E > > >::value, int > = 0> |
constexpr expected & | operator= (const unexpected< G > &e) |
|
template<typename G , std::enable_if_t< conjunction< std::is_constructible< E, G >, std::is_assignable< E &, G >, disjunction< std::is_void< T >, std::is_nothrow_constructible< E, G >, std::is_nothrow_move_constructible< T >, std::is_nothrow_move_constructible< E > > >::value, int > = 0> |
constexpr expected & | operator= (unexpected< G > &&e) |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr const T * | operator-> () const noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr T * | operator-> () noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr const U & | operator* () const &noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr U & | operator* () &noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr const U && | operator* () const &&noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr U && | operator* () &&noexcept |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | operator* () &noexcept |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | operator* () const &noexcept |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | operator* () &&noexcept |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | operator* () const &&noexcept |
|
VCCC_NODISCARD bool | has_value () const noexcept |
|
constexpr | operator bool () const noexcept |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr U & | value () & |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr const U & | value () const & |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr U && | value () && |
|
template<typename U = T, std::enable_if_t<!std::is_void< U >::value, int > = 0> |
constexpr const U && | value () const && |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | value () const & |
|
template<typename U = T, std::enable_if_t< std::is_void< U >::value, int > = 0> |
constexpr void | value () && |
|
constexpr const E & | error () const &noexcept |
|
constexpr E & | error () &noexcept |
|
constexpr const E && | error () const &&noexcept |
|
constexpr E && | error () &&noexcept |
|
template<typename U , std::enable_if_t< conjunction< negation< std::is_void< T >>, copy_constructible< T >, convertible_to< U &&, T > >::value, int > = 0> |
constexpr T | value_or (U &&default_value) const & |
|
template<typename U , std::enable_if_t< conjunction< negation< std::is_void< T >>, move_constructible< T >, convertible_to< U &&, T > >::value, int > = 0> |
constexpr T | value_or (U &&default_value) && |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, E & >, is_invocable< and_then_t, F, expected & > >::value, int > = 0> |
constexpr auto | and_then (F &&f) & |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, const E & >, is_invocable< and_then_t, F, const expected & > >::value, int > = 0> |
constexpr auto | and_then (F &&f) const & |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, E && >, is_invocable< and_then_t, F, expected && > >::value, int > = 0> |
constexpr auto | and_then (F &&f) && |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, const E && >, is_invocable< and_then_t, F, const expected && > >::value, int > = 0> |
constexpr auto | and_then (F &&f) const && |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, E & >, is_invocable< transform_t, F, expected & > >::value, int > = 0> |
constexpr auto | transform (F &&f) & |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, const E & >, is_invocable< transform_t, F, const expected & > >::value, int > = 0> |
constexpr auto | transform (F &&f) const & |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, E && >, is_invocable< transform_t, F, expected && > >::value, int > = 0> |
constexpr auto | transform (F &&f) && |
|
template<typename F , std::enable_if_t< conjunction< std::is_constructible< E, const E && >, is_invocable< transform_t, F, const expected && > >::value, int > = 0> |
constexpr auto | transform (F &&f) const && |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_lvalue_reference_t< T >>, is_invocable< or_else_t, F, expected & > >::value, int > = 0> |
constexpr auto | or_else (F &&f) & |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_lvalue_reference_t< std::add_const_t< T >>>, is_invocable< or_else_t, F, const expected & > >::value, int > = 0> |
constexpr auto | or_else (F &&f) const & |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_rvalue_reference_t< T >>, is_invocable< or_else_t, F, expected && > >::value, int > = 0> |
constexpr auto | or_else (F &&f) && |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_rvalue_reference_t< std::add_const_t< T >>>, is_invocable< or_else_t, F, const expected && > >::value, int > = 0> |
constexpr auto | or_else (F &&f) const && |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_lvalue_reference_t< T >>, is_invocable< transform_error_t, F, expected & > >::value, int > = 0> |
constexpr auto | transform_error (F &&f) & |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_lvalue_reference_t< std::add_const_t< T >>>, is_invocable< transform_error_t, F, const expected & > >::value, int > = 0> |
constexpr auto | transform_error (F &&f) const & |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_rvalue_reference_t< T >>, is_invocable< transform_error_t, F, expected && > >::value, int > = 0> |
constexpr auto | transform_error (F &&f) && |
|
template<typename F , std::enable_if_t< conjunction< detail::void_or< T, std::is_constructible, T, std::add_rvalue_reference_t< std::add_const_t< T >>>, is_invocable< transform_error_t, F, const expected && > >::value, int > = 0> |
constexpr auto | transform_error (F &&f) const && |
|
template<typename... Args, std::enable_if_t< conjunction< negation< std::is_void< T >>, std::is_nothrow_constructible< T, Args... > >::value, int > = 0> |
constexpr std::add_lvalue_reference_t< T > | emplace (Args &&... args) noexcept |
|
template<typename U , typename... Args, std::enable_if_t< conjunction< negation< std::is_void< T >>, std::is_nothrow_constructible< T, std::initializer_list< U > &, Args... > >::value, int > = 0> |
constexpr std::add_lvalue_reference_t< T > | emplace (std::initializer_list< U > il, Args &&... args) noexcept |
|
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, std::is_void< T > >::value, int > = 0> |
constexpr void | emplace () noexcept |
|
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, detail::void_or< T, is_swappable, T >, is_swappable< E >, detail::void_or< T, std::is_move_constructible, T >, std::is_move_constructible< E >, disjunction< detail::void_or< T, std::is_nothrow_move_constructible, T >, std::is_nothrow_move_constructible< E > > >::value, int > = 0> |
constexpr void | swap (expected &other) noexcept(nothrow_swappable::value) |
|