Public Types |
typedef T | value_type |
Public Member Functions |
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) |
constexpr bool | has_value () const noexcept |
constexpr | operator bool () const noexcept |
constexpr const T & | operator* () const & |
T & | operator* ()& |
constexpr const T && | operator* () const && |
T && | operator* ()&& |
const T * | operator-> () const |
T * | operator-> () |
optional & | operator= (nullopt_t) noexcept |
optional & | operator= (const optional &src) |
optional & | operator= (optional &&src) |
template<typename U = T, typename = typename std::enable_if<absl::conjunction< absl::negation< std::is_same<optional<T>, typename std::decay<U>::type>>, absl::negation< absl::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<absl::conjunction< absl::negation<std::is_same<T, U>>, std::is_constructible<T, const U&>, std::is_assignable<T&, const U&>, absl::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<absl::conjunction< absl::negation<std::is_same<T, U>>, std::is_constructible<T, U>, std::is_assignable<T&, U>, absl::negation< optional_internal:: is_constructible_convertible_assignable_from_optional< T, U>>>::value>::type> |
optional & | operator= (optional< U > &&rhs) |
constexpr | optional () noexcept |
constexpr | optional (nullopt_t) noexcept |
| optional (const optional &src) |
| optional (optional &&src) |
template<typename InPlaceT , typename... Args, absl::enable_if_t< absl::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< absl::conjunction< absl::negation< std::is_same< in_place_t, typename std::decay< U >::type > >, absl::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< absl::conjunction< absl::negation< std::is_same< in_place_t, typename std::decay< U >::type >>, absl::negation< std::is_same< optional< T >, typename std::decay< U >::type >>, absl::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< absl::conjunction< absl::negation< std::is_same< T, U > >, std::is_constructible< T, const U & >, absl::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< absl::conjunction< absl::negation< std::is_same< T, U >>, std::is_constructible< T, const U & >, absl::negation< optional_internal::is_constructible_convertible_from_optional< T, U >>, absl::negation< std::is_convertible< const U &, T >>>::value, bool >::type = false> |
| optional (const optional< U > &rhs) |
template<typename U , typename std::enable_if< absl::conjunction< absl::negation< std::is_same< T, U > >, std::is_constructible< T, U && >, absl::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< absl::conjunction< absl::negation< std::is_same< T, U >>, std::is_constructible< T, U && >, absl::negation< optional_internal::is_constructible_convertible_from_optional< T, U >>, absl::negation< std::is_convertible< U &&, T >>>::value, bool >::type = false> |
| optional (optional< U > &&rhs) |
ABSL_ATTRIBUTE_REINITIALIZES void | reset () noexcept |
void | swap (optional &rhs) noexcept(std |
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)&& |
| ~optional () |
Private Member Functions |
constexpr const T & | reference () const |
T & | reference () |
| static_assert (!std::is_same< nullopt_t, typename std::remove_cv< T >::type >::value,"optional<nullopt_t> is not allowed.") |
| static_assert (!std::is_same< in_place_t, typename std::remove_cv< T >::type >::value,"optional<in_place_t> is not allowed.") |
| static_assert (!std::is_reference< T >::value,"optional<reference> is not allowed.") |
template<typename T>
class absl::optional< T >
Definition at line 116 of file optional.h.