Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::optional< T > Struct Template Reference
+ Inheritance diagram for ranges::optional< T >:

Public Types

using value_type = meta::_t< std::remove_cv< T > >
 

Public Member Functions

template<typename E , typename... Args>
CPP_TEMPLATE_AUX_0 c (requires ` constructible_from< T, std::initializer_list< E > &, Args... >) ccconstexpr explicit optional(in_place_t
 
template<typename U >
CPP_TEMPLATE_AUX_0 c (requires ` copy_constructible< T > &&convertible_to< U, T >) ccconstexpr T value_or(U &&u) const &
 
template<typename U >
CPP_TEMPLATE_AUX_0 c (requires ` move_constructible< T > &&convertible_to< U, T >) ccconstexpr T value_or(U &&u) &&
 
template<typename U = T>
CPP_TEMPLATE_AUX_0 c (requires `(!same_as< detail::decay_t< U >, in_place_t >) &&(!same_as< detail::decay_t< U >, optional >) &&constructible_from< T, U > &&(!convertible_to< U, T >)) ccconstexpr explicit optional(U &&v)
 
template<typename U = T>
CPP_TEMPLATE_AUX_0 c (requires `(!same_as< detail::decay_t< U >, in_place_t >) &&(!same_as< detail::decay_t< U >, optional >) &&constructible_from< T, U > &&convertible_to< U, T >) ccconstexpr optional(U &&v)
 
template<typename U = T>
CPP_TEMPLATE_AUX_0 c (requires `(!same_as< optional, detail::decay_t< U >>) &&(!(satisfies< T, std::is_scalar > &&same_as< T, detail::decay_t< U >>)) &&constructible_from< T, U > &&assignable_from< T &, U >) ccconstexpr optional &operator
 
template<typename U >
 CPP_TEMPLATE_AUX_0 (requires ` optional_should_convert< U, T > &&constructible_from< T, U > &&(!convertible_to< U, T >)) explicit optional(optional< U > &&that)
 
template<typename U >
CPP_TEMPLATE_AUX_0 e (requires ` optional_should_convert< U, T > &&constructible_from< T, U const & > &&(!convertible_to< U const &, T >)) eeexplicit optional(optional< U > const &that)
 
CPP_TEMPLATE_AUX_0 std::initializer_list< E > Args &&args noexcept (std::is_nothrow_constructible< T, std::initializer_list< E > &, Args... >::value)
 
template<typename U >
CPP_TEMPLATE_AUX_0 o (requires ` optional_should_convert< U, T > &&constructible_from< T, U > &&convertible_to< U, T >) oooptional(optional< U > &&that)
 
template<typename U >
CPP_TEMPLATE_AUX_0 o (requires ` optional_should_convert< U, T > &&constructible_from< T, U const & > &&convertible_to< U const &, T >) oooptional(optional< U > const &that)
 
constexpr operator bool () const noexcept
 
constexpr optionaloperator= (nullopt_t) noexcept
 
optionaloperator= (optional &&)=default
 
optionaloperator= (optional const &)=default
 
constexpr optional (nullopt_t) noexcept
 
 optional (optional &&)=default
 
 optional (optional const &)=default
 
constexpr T & value () &
 
constexpr T && value () &&
 
constexpr T const & value () const &
 
constexpr T const && value () const &&
 

Public Attributes

CPP_TEMPLATE_AUX_0 std::initializer_list< E > il