Range-v3
Range algorithms, views, and actions for the Standard Library
optional.hpp File Reference

Classes

struct  ranges::bad_optional_access
 
struct  ranges::nullopt_t
 
struct  ranges::nullopt_t::tag
 
struct  ranges::optional< T >
 
struct  ranges::optional< T >
 

Functions

 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename U, typename T)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 
template<typename T >
constexpr auto ranges::make_optional (T &&t) noexcept(noexcept(decltype(optional< detail::decay_t< T >>{static_cast< T &&>(t)})(optional< detail::decay_t< T >>{static_cast< T &&>(t)}))) -> decltype(optional< detail::decay_t< T >>
 
template<typename T , typename... Args>
constexpr auto ranges::make_optional (Args &&... args) noexcept(noexcept(decltype(optional< T >{in_place, static_cast< Args &&>(args)...})(optional< T >{in_place, static_cast< Args &&>(args)...}))) -> decltype(optional< T >
 
template<typename T , typename U , typename... Args>
constexpr auto ranges::make_optional (std::initializer_list< U > il, Args &&... args) noexcept(noexcept(decltype(optional< T >{in_place, il, static_cast< Args &&>(args)...})(optional< T >{in_place, il, static_cast< Args &&>(args)...}))) -> decltype(optional< T >
 

Variables

concept ranges::optional_should_convert = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires(int)(void()) && !( constructible_from<T, optional<U> & > || constructible_from<T, optional<U> && > || constructible_from<T, optional<U> const & > || constructible_from<T, optional<U> const &&> || convertible_to<optional<U> &, T> || convertible_to<optional<U> &&, T> || convertible_to<optional<U> const &, T> || convertible_to<optional<U> const &&, T> ) )( requires(int)(void()) && !( constructible_from<T, optional<U> & > || constructible_from<T, optional<U> && > || constructible_from<T, optional<U> const & > || constructible_from<T, optional<U> const &&> || convertible_to<optional<U> &, T> || convertible_to<optional<U> &&, T> || convertible_to<optional<U> const &, T> || convertible_to<optional<U> const &&, T> ) )
 
concept ranges::optional_should_convert_assign = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( optional_should_convert<U )( optional_should_convert<U, T> && !(assignable_from<T &, optional<U> &> || assignable_from<T &, optional<U> &&> || assignable_from<T &, optional<U> const &> || assignable_from<T &, optional<U> const &&>) )