20 template<
typename T,
typename _ =
void>
28 struct is_container<
T, std::
void_t<decltype(std::declval<T>().begin()), decltype(std::declval<T>().end()), typename T::value_type>> : std::true_type {};
36 template<
typename T,
typename _ =
void>
45 : std::is_same<T, std::optional<typename T::value_type>> {};
53 template<
typename T,
typename _ =
void>
62 decltype(std::declval<T>().first),
63 decltype(std::declval<T>().second)
64 >> : std::true_type {};
72 static constexpr bool value = std::is_reference_v<T>;
Main namespace for the StormByte library.
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 trait to check if a type is a container.
Definition type_traits.hxx:21
Type trait to check if a type is an optional.
Definition type_traits.hxx:37
Type trait to check if a type is a pair.
Definition type_traits.hxx:54
Type traits for checking if a type is a reference.
Definition type_traits.hxx:71