|
constexpr | optional () noexcept |
|
constexpr | optional (nullopt_t) noexcept |
|
| optional (const optional &rhs) |
|
| optional (optional &&rhs) noexcept(std::is_nothrow_move_constructible< T >::value) |
|
template<typename U = T, TR2_OPTIONAL_REQUIRES(std::is_constructible< T, U && >::value && !std::is_same< typename std::decay< U >::type, in_place_t >::value && !std::is_same< typename std::decay< U >::type, optional< T >>::value && std::is_convertible< U &&, T >) > |
constexpr | optional (U &&u) |
|
template<typename U = T, TR2_OPTIONAL_REQUIRES(std::is_constructible< T, U && >::value && !std::is_same< typename std::decay< U >::type, in_place_t >::value && !std::is_same< typename std::decay< U >::type, optional< T >>::value && !std::is_convertible< U &&, T >) > |
constexpr | optional (U &&u) |
|
template<class... Args> |
constexpr | optional (in_place_t, Args &&... args) |
|
template<class U , class... Args, TR2_OPTIONAL_REQUIRES( std::is_constructible< T, std::initializer_list< U >>) > |
constexpr | optional (in_place_t, std::initializer_list< U > il, Args &&... args) |
|
| ~optional ()=default |
|
optional & | operator= (nullopt_t) noexcept |
|
optional & | operator= (const optional &rhs) |
|
optional & | operator= (optional &&rhs) noexcept(std::is_nothrow_move_assignable< T >::value &&std::is_nothrow_move_constructible< T >::value) |
|
template<class U = T> |
auto | operator= (U &&v) -> typename std::enable_if< std::is_constructible< T, U >::value &&!std::is_same< typename std::decay< U >::type, optional< T >>::value &&(std::is_scalar< T >::value||std::is_same< typename std::decay< U >::type, T >::value) &&std::is_assignable< T &, U >::value, optional &>::type |
|
template<class... Args> |
void | emplace (Args &&... args) |
|
template<class U , class... Args> |
void | emplace (std::initializer_list< U > il, Args &&... args) |
|
void | swap (optional< T > &rhs) noexcept(std::is_nothrow_move_constructible< T >::value &&noexcept(std::swap(std::declval< T &>(), std::declval< T &>()))) |
|
constexpr | operator bool () const noexcept |
|
constexpr bool | has_value () const noexcept |
|
TR2_OPTIONAL_HOST_CONSTEXPR T const * | operator-> () const |
|
TR2_OPTIONAL_HOST_CONSTEXPR T * | operator-> () |
|
TR2_OPTIONAL_HOST_CONSTEXPR T const & | operator* () const & |
|
TR2_OPTIONAL_HOST_CONSTEXPR T & | operator* () & |
|
TR2_OPTIONAL_HOST_CONSTEXPR T && | operator* () && |
|
TR2_OPTIONAL_HOST_CONSTEXPR T const & | value () const & |
|
TR2_OPTIONAL_HOST_CONSTEXPR T & | value () & |
|
TR2_OPTIONAL_HOST_CONSTEXPR T && | value () && |
|
template<class V > |
constexpr T | value_or (V &&v) const & |
|
template<class V > |
constexpr T | value_or (V &&v) && |
|
void | reset () noexcept |
|