libstdc++
Collaboration diagram for Optional values:

Classes

class  std::experimental::fundamentals_v1::bad_optional_access
 
struct  std::experimental::fundamentals_v1::in_place_t
 
struct  std::experimental::fundamentals_v1::nullopt_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)".

Macro Definition Documentation

◆ __cpp_lib_experimental_optional

#define __cpp_lib_experimental_optional

Definition at line 64 of file experimental/optional.

Typedef Documentation

◆ argument_type

template<typename _Tp >
using std::hash< experimental::optional< _Tp > >::argument_type = experimental::optional<_Tp>

Definition at line 925 of file experimental/optional.

◆ result_type

template<typename _Tp >
using std::hash< experimental::optional< _Tp > >::result_type = size_t

Definition at line 924 of file experimental/optional.

◆ value_type

template<typename _Tp >
using std::experimental::fundamentals_v1::optional< _Tp >::value_type = _Tp

Definition at line 451 of file experimental/optional.

Enumeration Type Documentation

◆ _Construct

enum class std::experimental::fundamentals_v1::nullopt_t::_Construct
strong

Definition at line 88 of file experimental/optional.

Function Documentation

◆ bad_optional_access() [1/2]

std::experimental::fundamentals_v1::bad_optional_access::bad_optional_access ( )
inline

Definition at line 107 of file experimental/optional.

◆ bad_optional_access() [2/2]

std::experimental::fundamentals_v1::bad_optional_access::bad_optional_access ( const char *  __arg)
inlineexplicit

Definition at line 110 of file experimental/optional.

◆ nullopt_t()

constexpr std::experimental::fundamentals_v1::nullopt_t::nullopt_t ( _Construct  )
inlineexplicitconstexpr

Definition at line 91 of file experimental/optional.

◆ optional() [1/3]

template<typename _Tp >
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)
inlineconstexpr

Definition at line 464 of file experimental/optional.

◆ optional() [2/3]

template<typename _Tp >
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)
inlineconstexpr

Definition at line 483 of file experimental/optional.

◆ optional() [3/3]

template<typename _Tp >
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)
inlineconstexpr

Definition at line 509 of file experimental/optional.

◆ emplace() [1/2]

template<typename _Tp >
template<typename... _Args>
enable_if_t< is_constructible< _Tp, _Args &&... >::value > std::experimental::fundamentals_v1::optional< _Tp >::emplace ( _Args &&...  __args)
inline

Definition at line 607 of file experimental/optional.

◆ emplace() [2/2]

template<typename _Tp >
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 
)
inline

Definition at line 616 of file experimental/optional.

◆ operator bool()

template<typename _Tp >
constexpr std::experimental::fundamentals_v1::optional< _Tp >::operator bool ( ) const
inlineexplicitconstexprnoexcept

Definition at line 671 of file experimental/optional.

◆ operator()()

template<typename _Tp >
size_t std::hash< experimental::optional< _Tp > >::operator() ( const experimental::optional< _Tp > &  __t) const
inlinenoexcept

Definition at line 928 of file experimental/optional.

◆ operator*() [1/4]

template<typename _Tp >
constexpr _Tp & std::experimental::fundamentals_v1::optional< _Tp >::operator* ( ) &
inlineconstexpr

Definition at line 660 of file experimental/optional.

◆ operator*() [2/4]

template<typename _Tp >
constexpr _Tp && std::experimental::fundamentals_v1::optional< _Tp >::operator* ( ) &&
inlineconstexpr

Definition at line 664 of file experimental/optional.

◆ operator*() [3/4]

template<typename _Tp >
constexpr const _Tp & std::experimental::fundamentals_v1::optional< _Tp >::operator* ( ) const &
inlineconstexpr

Definition at line 656 of file experimental/optional.

◆ operator*() [4/4]

template<typename _Tp >
constexpr const _Tp && std::experimental::fundamentals_v1::optional< _Tp >::operator* ( ) const &&
inlineconstexpr

Definition at line 668 of file experimental/optional.

◆ operator->() [1/2]

template<typename _Tp >
_Tp * std::experimental::fundamentals_v1::optional< _Tp >::operator-> ( )
inline

Definition at line 652 of file experimental/optional.

◆ operator->() [2/2]

template<typename _Tp >
constexpr const _Tp * std::experimental::fundamentals_v1::optional< _Tp >::operator-> ( ) const
inlineconstexpr

Definition at line 648 of file experimental/optional.

◆ operator=() [1/4]

template<typename _Tp >
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)
inline

Definition at line 544 of file experimental/optional.

◆ operator=() [2/4]

template<typename _Tp >
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)
inline

Definition at line 563 of file experimental/optional.

◆ operator=() [3/4]

template<typename _Tp >
optional & std::experimental::fundamentals_v1::optional< _Tp >::operator= ( nullopt_t  )
inlinenoexcept

Definition at line 530 of file experimental/optional.

◆ operator=() [4/4]

template<typename _Tp >
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)
inline

Definition at line 588 of file experimental/optional.

◆ swap()

template<typename _Tp >
void std::experimental::fundamentals_v1::optional< _Tp >::swap ( optional< _Tp > &  __other)
inlinenoexcept

Definition at line 626 of file experimental/optional.

◆ value() [1/4]

template<typename _Tp >
constexpr _Tp & std::experimental::fundamentals_v1::optional< _Tp >::value ( ) &
inlineconstexpr

Definition at line 685 of file experimental/optional.

◆ value() [2/4]

template<typename _Tp >
constexpr _Tp && std::experimental::fundamentals_v1::optional< _Tp >::value ( ) &&
inlineconstexpr

Definition at line 695 of file experimental/optional.

◆ value() [3/4]

template<typename _Tp >
constexpr const _Tp & std::experimental::fundamentals_v1::optional< _Tp >::value ( ) const &
inlineconstexpr

Definition at line 675 of file experimental/optional.

◆ value() [4/4]

template<typename _Tp >
constexpr const _Tp && std::experimental::fundamentals_v1::optional< _Tp >::value ( ) const &&
inlineconstexpr

Definition at line 705 of file experimental/optional.

◆ value_or() [1/2]

template<typename _Tp >
template<typename _Up >
_Tp std::experimental::fundamentals_v1::optional< _Tp >::value_or ( _Up &&  __u) &&
inline

Definition at line 729 of file experimental/optional.

◆ value_or() [2/2]

template<typename _Tp >
template<typename _Up >
constexpr _Tp std::experimental::fundamentals_v1::optional< _Tp >::value_or ( _Up &&  __u) const &
inlineconstexpr

Definition at line 716 of file experimental/optional.

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.