|
constexpr | optional () noexcept |
|
constexpr | optional (nullopt_t) noexcept |
|
| optional (const optional &src)=default |
|
| optional (optional &&src)=default |
|
template<typename InPlaceT , typename... Args, phmap::enable_if_t< phmap::conjunction< std::is_same< InPlaceT, in_place_t >, std::is_constructible< T, Args &&... > >::value > * = nullptr> |
constexpr | optional (InPlaceT, Args &&... args) |
|
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type> |
constexpr | optional (in_place_t, std::initializer_list< U > il, Args &&... args) |
|
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, std::is_convertible< U &&, T >, std::is_constructible< T, U && > >::value, bool >::type = false> |
constexpr | optional (U &&v) |
|
template<typename U = T, typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, phmap::negation< std::is_same< optional< T >, typename std::decay< U >::type > >, phmap::negation< std::is_convertible< U &&, T > >, std::is_constructible< T, U && > >::value, bool >::type = false> |
constexpr | optional (U &&v) |
|
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< const U &, T > >::value, bool >::type = false> |
| optional (const optional< U > &rhs) |
|
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< const U &, T > > >::value, bool >::type = false> |
| optional (const optional< U > &rhs) |
|
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, std::is_convertible< U &&, T > >::value, bool >::type = false> |
| optional (optional< U > &&rhs) |
|
template<typename U , typename std::enable_if< phmap::conjunction< phmap::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, phmap::negation< optional_internal::is_constructible_convertible_from_optional< T, U > >, phmap::negation< std::is_convertible< U &&, T > > >::value, bool >::type = false> |
| optional (optional< U > &&rhs) |
|
| ~optional ()=default |
|
optional & | operator= (nullopt_t) noexcept |
|
optional & | operator= (const optional &src)=default |
|
optional & | operator= (optional &&src)=default |
|
template<typename U = T, typename = typename std::enable_if<phmap::conjunction< phmap::negation< std::is_same<optional<T>, typename std::decay<U>::type>>, phmap::negation< phmap::conjunction<std::is_scalar<T>, std::is_same<T, typename std::decay<U>::type>>>, std::is_constructible<T, U>, std::is_assignable<T&, U>>::value>::type> |
optional & | operator= (U &&v) |
|
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, const U&>, std::is_assignable<T&, const U&>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type> |
optional & | operator= (const optional< U > &rhs) |
|
template<typename U , typename = typename std::enable_if<phmap::conjunction< phmap::negation<std::is_same<T, U>>, std::is_constructible<T, U>, std::is_assignable<T&, U>, phmap::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type> |
optional & | operator= (optional< U > &&rhs) |
|
PHMAP_ATTRIBUTE_REINITIALIZES void | reset () noexcept |
|
template<typename... Args, typename = typename std::enable_if< std::is_constructible<T, Args&&...>::value>::type> |
T & | emplace (Args &&... args) |
|
template<typename U , typename... Args, typename = typename std::enable_if<std::is_constructible< T, std::initializer_list<U>&, Args&&...>::value>::type> |
T & | emplace (std::initializer_list< U > il, Args &&... args) |
|
void | swap (optional &rhs) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_trivial< T >::value) |
|
const T * | operator-> () const |
|
T * | operator-> () |
|
constexpr const T & | operator* () const & |
|
T & | operator* () & |
|
constexpr const T && | operator* () const && |
|
T && | operator* () && |
|
constexpr | operator bool () const noexcept |
|
constexpr bool | has_value () const noexcept |
|
constexpr const T & | value () const & |
|
T & | value () & |
|
T && | value () && |
|
constexpr const T && | value () const && |
|
template<typename U > |
constexpr T | value_or (U &&v) const & |
|
template<typename U > |
T | value_or (U &&v) && |
|