3#include <StormByte/type_traits.hxx>
27 template <
typename T,
class E>
30 std::expected<std::reference_wrapper<std::remove_reference_t<T>>, std::shared_ptr<E>>,
31 std::expected<T, std::shared_ptr<E>>
44 return std::unexpected<std::shared_ptr<E>>(std::move(
error_ptr));
57 return std::unexpected<std::shared_ptr<std::decay_t<E>>>(
58 std::make_shared<std::decay_t<E>>(std::forward<E>(
error))
73 template <
typename E,
typename...
Args>
77 if constexpr (
sizeof...(Args) == 0) {
89 return std::unexpected<std::shared_ptr<E>>(
Main namespace for the StormByte library.
auto Unexpected(std::shared_ptr< E > error_ptr)
Creates an std::unexpected with a shared pointer to the error.
Definition expected.hxx:43
std::conditional_t< is_reference< T >::value, std::expected< std::reference_wrapper< std::remove_reference_t< T > >, std::shared_ptr< E > >, std::expected< T, std::shared_ptr< E > > > Expected
Expected type with support for reference types.
Definition expected.hxx:32
Type traits for checking if a type is a reference.
Definition type_traits.hxx:71