openMSX
Public Types | Public Member Functions | List of all members
optional< T > Class Template Reference

#include <optional.hh>

Inheritance diagram for optional< T >:
Inheritance graph
[legend]
Collaboration diagram for optional< T >:
Collaboration graph
[legend]

Public Types

using value_type = T
 

Public Member Functions

constexpr optional () noexcept
 
constexpr optional (nullopt_t) noexcept
 
 optional (const optional &rhs)
 
 optional (optional &&rhs) noexcept(std::is_nothrow_move_constructible< T >::value)
 
constexpr optional (const T &v)
 
constexpr optional (T &&v)
 
template<typename... Args>
constexpr optional (in_place_t, Args &&... args)
 
template<typename U , typename... Args, std::enable_if_t< std::is_constructible< T, std::initializer_list< U >>::value > * = nullptr>
constexpr optional (in_place_t, std::initializer_list< U > il, Args &&... args)
 
 ~optional ()=default
 
optionaloperator= (nullopt_t) noexcept
 
optionaloperator= (const optional &rhs)
 
optionaloperator= (optional &&rhs) noexcept(std::is_nothrow_move_assignable< T >::value &&std::is_nothrow_move_constructible< T >::value)
 
template<typename U >
auto operator= (U &&v) -> std::enable_if_t< std::is_same< std::decay_t< U >, T >::value, optional &>
 
template<typename... Args>
void emplace (Args &&... args)
 
template<typename U , typename... Args>
void emplace (std::initializer_list< U > il, Args &&... args)
 
void swap (optional< T > &rhs) noexcept(std::is_nothrow_move_constructible< T >::value &&noexcept(opt_impl::swap_ns::adl_swap(std::declval< T &>(), std::declval< T &>())))
 
constexpr operator bool () const noexcept
 
constexpr bool has_value () const noexcept
 
constexpr const T * operator-> () const
 
constexpr T * operator-> ()
 
constexpr const T & operator* () const &
 
constexpr T & operator* () &
 
constexpr T && operator* () &&
 
constexpr const T & value () const &
 
constexpr T & value () &
 
constexpr T && value () &&
 
template<typename V >
constexpr T value_or (V &&v) const &
 
template<typename V >
constexpr T value_or (V &&v) &&
 
void reset () noexcept
 

Detailed Description

template<typename T>
class optional< T >

Definition at line 28 of file optional.hh.

Member Typedef Documentation

◆ value_type

template<typename T>
using optional< T >::value_type = T

Definition at line 295 of file optional.hh.

Constructor & Destructor Documentation

◆ optional() [1/8]

template<typename T>
constexpr optional< T >::optional ( )
inlinenoexcept

Definition at line 297 of file optional.hh.

◆ optional() [2/8]

template<typename T>
constexpr optional< T >::optional ( nullopt_t  )
inlinenoexcept

Definition at line 298 of file optional.hh.

◆ optional() [3/8]

template<typename T>
optional< T >::optional ( const optional< T > &  rhs)
inline

Definition at line 300 of file optional.hh.

◆ optional() [4/8]

template<typename T>
optional< T >::optional ( optional< T > &&  rhs)
inlinenoexcept

Definition at line 308 of file optional.hh.

◆ optional() [5/8]

template<typename T>
constexpr optional< T >::optional ( const T &  v)
inline

Definition at line 319 of file optional.hh.

◆ optional() [6/8]

template<typename T>
constexpr optional< T >::optional ( T &&  v)
inline

Definition at line 321 of file optional.hh.

◆ optional() [7/8]

template<typename T>
template<typename... Args>
constexpr optional< T >::optional ( in_place_t  ,
Args &&...  args 
)
inlineexplicit

Definition at line 324 of file optional.hh.

◆ optional() [8/8]

template<typename T>
template<typename U , typename... Args, std::enable_if_t< std::is_constructible< T, std::initializer_list< U >>::value > * = nullptr>
constexpr optional< T >::optional ( in_place_t  ,
std::initializer_list< U >  il,
Args &&...  args 
)
inlineexplicit

Definition at line 332 of file optional.hh.

◆ ~optional()

template<typename T>
optional< T >::~optional ( )
default

Member Function Documentation

◆ emplace() [1/2]

template<typename T>
template<typename... Args>
void optional< T >::emplace ( Args &&...  args)
inline

◆ emplace() [2/2]

template<typename T>
template<typename U , typename... Args>
void optional< T >::emplace ( std::initializer_list< U >  il,
Args &&...  args 
)
inline

Definition at line 390 of file optional.hh.

◆ has_value()

template<typename T>
constexpr bool optional< T >::has_value ( ) const
inlinenoexcept

Definition at line 418 of file optional.hh.

◆ operator bool()

template<typename T>
constexpr optional< T >::operator bool ( ) const
inlineexplicitnoexcept

Definition at line 414 of file optional.hh.

◆ operator*() [1/3]

template<typename T>
constexpr const T& optional< T >::operator* ( ) const &
inline

Definition at line 435 of file optional.hh.

◆ operator*() [2/3]

template<typename T>
constexpr T& optional< T >::operator* ( ) &
inline

Definition at line 441 of file optional.hh.

◆ operator*() [3/3]

template<typename T>
constexpr T&& optional< T >::operator* ( ) &&
inline

Definition at line 447 of file optional.hh.

◆ operator->() [1/2]

template<typename T>
constexpr const T* optional< T >::operator-> ( ) const
inline

Definition at line 423 of file optional.hh.

◆ operator->() [2/2]

template<typename T>
constexpr T* optional< T >::operator-> ( )
inline

Definition at line 429 of file optional.hh.

◆ operator=() [1/4]

template<typename T>
optional& optional< T >::operator= ( nullopt_t  )
inlinenoexcept

Definition at line 341 of file optional.hh.

◆ operator=() [2/4]

template<typename T>
optional& optional< T >::operator= ( const optional< T > &  rhs)
inline

Definition at line 347 of file optional.hh.

◆ operator=() [3/4]

template<typename T>
optional& optional< T >::operator= ( optional< T > &&  rhs)
inlinenoexcept

Definition at line 358 of file optional.hh.

◆ operator=() [4/4]

template<typename T>
template<typename U >
auto optional< T >::operator= ( U &&  v) -> std::enable_if_t< std::is_same<std::decay_t<U>, T>::value, optional&>
inline

Definition at line 372 of file optional.hh.

◆ reset()

template<typename T>
void optional< T >::reset ( )
inlinenoexcept

◆ swap()

template<typename T>
void optional< T >::swap ( optional< T > &  rhs)
inlinenoexcept

Definition at line 396 of file optional.hh.

◆ value() [1/3]

template<typename T>
constexpr const T& optional< T >::value ( ) const &
inline

Definition at line 453 of file optional.hh.

◆ value() [2/3]

template<typename T>
constexpr T& optional< T >::value ( ) &
inline

Definition at line 461 of file optional.hh.

◆ value() [3/3]

template<typename T>
constexpr T&& optional< T >::value ( ) &&
inline

Definition at line 469 of file optional.hh.

◆ value_or() [1/2]

template<typename T>
template<typename V >
constexpr T optional< T >::value_or ( V &&  v) const &
inline

Definition at line 477 of file optional.hh.

◆ value_or() [2/2]

template<typename T>
template<typename V >
constexpr T optional< T >::value_or ( V &&  v) &&
inline

Definition at line 484 of file optional.hh.


The documentation for this class was generated from the following file: