libstdc++
Collaboration diagram for Optional values:

Classes

struct  std::experimental::fundamentals_v1::in_place_t
 
class  std::experimental::fundamentals_v1::optional< _Tp >
 

Macros

#define __cpp_lib_experimental_optional
 

Typedefs

using std::hash< experimental::optional< _Tp > >::argument_type = experimental::optional< _Tp >
 
using std::hash< experimental::optional< _Tp > >::result_type = size_t
 
using std::experimental::fundamentals_v1::optional< _Tp >::value_type = _Tp
 

Enumerations

enum class  _Construct { _Token }
 

Functions

 std::experimental::fundamentals_v1::bad_optional_access::bad_optional_access (const char *__arg)
 
constexpr std::experimental::fundamentals_v1::nullopt_t::nullopt_t (_Construct)
 
template<typename _Up = _Tp, enable_if_t< __and_< __not_< is_same< optional< _Tp >, decay_t< _Up >>>, is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp > >::value, bool > = true>
constexpr std::experimental::fundamentals_v1::optional< _Tp >::optional (_Up &&__t)
 
template<typename _Up , enable_if_t< __and_< __not_< is_same< _Tp, _Up >>, is_constructible< _Tp, const _Up & >, is_convertible< const _Up &, _Tp >, __not_< __converts_from_optional< _Tp, _Up >> >::value, bool > = true>
constexpr std::experimental::fundamentals_v1::optional< _Tp >::optional (const optional< _Up > &__t)
 
template<typename _Up , enable_if_t< __and_< __not_< is_same< _Tp, _Up >>, is_constructible< _Tp, _Up && >, is_convertible< _Up &&, _Tp >, __not_< __converts_from_optional< _Tp, _Up >> >::value, bool > = true>
constexpr std::experimental::fundamentals_v1::optional< _Tp >::optional (optional< _Up > &&__t)
 
template<typename... _Args>
enable_if_t< is_constructible< _Tp, _Args &&... >::value > std::experimental::fundamentals_v1::optional< _Tp >::emplace (_Args &&... __args)
 
template<typename _Up , typename... _Args>
enable_if_t< is_constructible< _Tp, initializer_list< _Up > &, _Args &&... >::value > std::experimental::fundamentals_v1::optional< _Tp >::emplace (initializer_list< _Up > __il, _Args &&... __args)
 
constexpr std::experimental::fundamentals_v1::optional< _Tp >::operator bool () const noexcept
 
size_t std::hash< experimental::optional< _Tp > >::operator() (const experimental::optional< _Tp > &__t) const noexcept(noexcept(hash< _Tp > {}(*__t)))
 
constexpr _Tp & std::experimental::fundamentals_v1::optional< _Tp >::operator* () &
 
constexpr _Tp && std::experimental::fundamentals_v1::optional< _Tp >::operator* () &&
 
constexpr const _Tp & std::experimental::fundamentals_v1::optional< _Tp >::operator* () const &
 
constexpr const _Tp && std::experimental::fundamentals_v1::optional< _Tp >::operator* () const &&
 
_Tp * std::experimental::fundamentals_v1::optional< _Tp >::operator-> ()
 
constexpr const _Tp * std::experimental::fundamentals_v1::optional< _Tp >::operator-> () const
 
template<typename _Up = _Tp>
enable_if_t< __and_< __not_< is_same< optional< _Tp >, decay_t< _Up > > >, is_constructible< _Tp, _Up >, __not_< __and_< is_scalar< _Tp >, is_same< _Tp, decay_t< _Up > > > >, is_assignable< _Tp &, _Up > >::value, optional & > std::experimental::fundamentals_v1::optional< _Tp >::operator= (_Up &&__u)
 
template<typename _Up >
enable_if_t< __and_< __not_< is_same< _Tp, _Up > >, is_constructible< _Tp, const _Up & >, is_assignable< _Tp &, _Up >, __not_< __converts_from_optional< _Tp, _Up > >, __not_< __assigns_from_optional< _Tp, _Up > > >::value, optional & > std::experimental::fundamentals_v1::optional< _Tp >::operator= (const optional< _Up > &__u)
 
optionalstd::experimental::fundamentals_v1::optional< _Tp >::operator= (nullopt_t) noexcept
 
template<typename _Up >
enable_if_t< __and_< __not_< is_same< _Tp, _Up > >, is_constructible< _Tp, _Up >, is_assignable< _Tp &, _Up >, __not_< __converts_from_optional< _Tp, _Up > >, __not_< __assigns_from_optional< _Tp, _Up > > >::value, optional & > std::experimental::fundamentals_v1::optional< _Tp >::operator= (optional< _Up > &&__u)
 
void std::experimental::fundamentals_v1::optional< _Tp >::swap (optional &__other) noexcept(is_nothrow_move_constructible< _Tp >() &&__is_nothrow_swappable< _Tp >::value)
 
constexpr _Tp & std::experimental::fundamentals_v1::optional< _Tp >::value () &
 
constexpr _Tp && std::experimental::fundamentals_v1::optional< _Tp >::value () &&
 
constexpr const _Tp & std::experimental::fundamentals_v1::optional< _Tp >::value () const &
 
constexpr const _Tp && std::experimental::fundamentals_v1::optional< _Tp >::value () const &&
 
template<typename _Up >
_Tp std::experimental::fundamentals_v1::optional< _Tp >::value_or (_Up &&__u) &&
 
template<typename _Up >
constexpr _Tp std::experimental::fundamentals_v1::optional< _Tp >::value_or (_Up &&__u) const &
 

Variables

constexpr in_place_t std::experimental::in_place
 
constexpr nullopt_t std::experimental::nullopt
 

Detailed Description

Class template for optional values and surrounding facilities, as described in n3793 "A proposal to add a utility class to represent optional objects (Revision 5)".

Variable Documentation

◆ in_place

constexpr in_place_t std::experimental::fundamentals_v1::in_place
constexpr

Tag for in-place construction.

Definition at line 77 of file experimental/optional.

◆ nullopt

constexpr nullopt_t std::experimental::fundamentals_v1::nullopt
constexpr

Tag to disengage optional objects.

Definition at line 96 of file experimental/optional.