scc 2025.09
SystemC components library
nonstd::optional< T > Class Template Reference

#include <optional.hpp>

Inheritance diagram for nonstd::optional< T >:
Collaboration diagram for nonstd::optional< T >:

Public Types

using value_type = T

Public Member Functions

template<class F>
TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T & > and_then (F &&f) &
template<class F>
TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T && > and_then (F &&f) &&
template<class F>
constexpr detail::invoke_result_t< F, const T & > and_then (F &&f) const &
template<class F>
constexpr detail::invoke_result_t< F, const T && > and_then (F &&f) const &&
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional & >(), std::declval< F && >())) map (F &&f) &
 Carries out some operation on the stored object if there is one.
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional && >(), std::declval< F && >())) map (F &&f) &&
template<class F>
constexpr decltype(optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) map (F &&f) const &
template<class F>
constexpr decltype(optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) map (F &&f) const &&
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional & >(), std::declval< F && >())) transform (F &&f) &
 Carries out some operation on the stored object if there is one.
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional && >(), std::declval< F && >())) transform (F &&f) &&
template<class F>
constexpr decltype(optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) transform (F &&f) const &
template<class F>
constexpr decltype(optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) transform (F &&f) const &&
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR or_else (F &&f) &
 Calls f if the optional is empty.
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR or_else (F &&f) &
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > or_else (F &&f) &&
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR or_else (F &&f) &&
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > or_else (F &&f) const &
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR or_else (F &&f) const &
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > or_else (F &&f) const &&
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > or_else (F &&f) const &&
template<class F, class U>
map_or (F &&f, U &&u) &
 Maps the stored value with f if there is one, otherwise returns u.
template<class F, class U>
map_or (F &&f, U &&u) &&
template<class F, class U>
map_or (F &&f, U &&u) const &
template<class F, class U>
map_or (F &&f, U &&u) const &&
template<class F, class U>
detail::invoke_result_t< U > map_or_else (F &&f, U &&u) &
template<class F, class U>
detail::invoke_result_t< U > map_or_else (F &&f, U &&u) &&
template<class F, class U>
detail::invoke_result_t< U > map_or_else (F &&f, U &&u) const &
template<class F, class U>
detail::invoke_result_t< U > map_or_else (F &&f, U &&u) const &&
template<class U>
constexpr optional< typename std::decay< U >::type > conjunction (U &&u) const
 Returns u if *this has a value, otherwise an empty optional.
TL_OPTIONAL_11_CONSTEXPR optional disjunction (const optional &rhs) &
 Returns rhs if *this is empty, otherwise the current value.
constexpr optional disjunction (const optional &rhs) const &
TL_OPTIONAL_11_CONSTEXPR optional disjunction (const optional &rhs) &&
constexpr optional disjunction (const optional &rhs) const &&
TL_OPTIONAL_11_CONSTEXPR optional disjunction (optional &&rhs) &
constexpr optional disjunction (optional &&rhs) const &
TL_OPTIONAL_11_CONSTEXPR optional disjunction (optional &&rhs) &&
constexpr optional disjunction (optional &&rhs) const &&
optional take ()
 Takes the value out of the optional, leaving it empty.
constexpr optional () noexcept=default
 Constructs an optional that does not contain a value.
constexpr optional (nullopt_t) noexcept
TL_OPTIONAL_11_CONSTEXPR optional (const optional &rhs)=default
TL_OPTIONAL_11_CONSTEXPR optional (optional &&rhs)=default
template<class... Args>
constexpr optional (detail::enable_if_t< std::is_constructible< T, Args... >::value, in_place_t >, Args &&... args)
 Constructs the stored value in-place using the given arguments.
template<class U, class... Args>
TL_OPTIONAL_11_CONSTEXPR optional (detail::enable_if_t< std::is_constructible< T, std::initializer_list< U > &, Args &&... >::value, in_place_t >, std::initializer_list< U > il, Args &&... args)
template<class U = T, detail::enable_if_t< std::is_convertible< U &&, T >::value > * = nullptr, detail::enable_forward_value< T, U > * = nullptr>
constexpr optional (U &&u)
 Constructs the stored value with u.
template<class U = T, detail::enable_if_t<!std::is_convertible< U &&, T >::value > * = nullptr, detail::enable_forward_value< T, U > * = nullptr>
constexpr optional (U &&u)
template<class U, detail::enable_from_other< T, U, const U & > * = nullptr, detail::enable_if_t< std::is_convertible< const U &, T >::value > * = nullptr>
 optional (const optional< U > &rhs)
 Converting copy constructor.
template<class U, detail::enable_from_other< T, U, const U & > * = nullptr, detail::enable_if_t<!std::is_convertible< const U &, T >::value > * = nullptr>
 optional (const optional< U > &rhs)
template<class U, detail::enable_from_other< T, U, U && > * = nullptr, detail::enable_if_t< std::is_convertible< U &&, T >::value > * = nullptr>
 optional (optional< U > &&rhs)
 Converting move constructor.
template<class U, detail::enable_from_other< T, U, U && > * = nullptr, detail::enable_if_t<!std::is_convertible< U &&, T >::value > * = nullptr>
 optional (optional< U > &&rhs)
 ~optional ()=default
 Destroys the stored value if there is one.
optionaloperator= (nullopt_t) noexcept
optionaloperator= (const optional &rhs)=default
optionaloperator= (optional &&rhs)=default
template<class U = T, detail::enable_assign_forward< T, U > * = nullptr>
optionaloperator= (U &&u)
template<class U, detail::enable_assign_from_other< T, U, const U & > * = nullptr>
optionaloperator= (const optional< U > &rhs)
template<class U, detail::enable_assign_from_other< T, U, U > * = nullptr>
optionaloperator= (optional< U > &&rhs)
template<class... Args>
T & emplace (Args &&... args)
template<class U, class... Args>
detail::enable_if_t< std::is_constructible< T, std::initializer_list< U > &, Args &&... >::value, T & > emplace (std::initializer_list< U > il, Args &&... args)
void swap (optional &rhs) noexcept(std::is_nothrow_move_constructible< T >::value &&detail::is_nothrow_swappable< T >::value)
constexpr const T * operator-> () const
 Returns a pointer to the stored value.
TL_OPTIONAL_11_CONSTEXPR T * operator-> ()
TL_OPTIONAL_11_CONSTEXPR T & operator* () &
 Returns the stored value.
constexpr const T & operator* () const &
TL_OPTIONAL_11_CONSTEXPR T && operator* () &&
constexpr const T && operator* () const &&
constexpr bool has_value () const noexcept
 Returns whether or not the optional has a value.
constexpr operator bool () const noexcept
TL_OPTIONAL_11_CONSTEXPR T & value () &
 Returns the contained value if there is one, otherwise throws bad_optional_access.
TL_OPTIONAL_11_CONSTEXPR const T & value () const &
TL_OPTIONAL_11_CONSTEXPR T && value () &&
TL_OPTIONAL_11_CONSTEXPR const T && value () const &&
template<class U>
constexpr T value_or (U &&u) const &
 Returns the stored value if there is one, otherwise returns u.
template<class U>
TL_OPTIONAL_11_CONSTEXPR T value_or (U &&u) &&
void reset () noexcept
 Destroys the stored value if one exists, making the optional empty.

Detailed Description

template<class T>
class nonstd::optional< T >

An optional object is an object that contains the storage for another object and manages the lifetime of this contained object, if any. The contained object may be initialized after the optional object has been initialized, and may be destroyed before the optional object has been destroyed. The initialization state of the contained object is tracked by the optional object.

Definition at line 577 of file optional.hpp.

Member Typedef Documentation

◆ value_type

template<class T>
using nonstd::optional< T >::value_type = T

Definition at line 843 of file optional.hpp.

Constructor & Destructor Documentation

◆ optional() [1/11]

template<class T>
nonstd::optional< T >::optional ( nullopt_t )
inlineconstexprnoexcept

Definition at line 848 of file optional.hpp.

◆ optional() [2/11]

template<class T>
TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::optional ( const optional< T > & rhs)
default

Copy constructor

If rhs contains a value, the stored value is direct-initialized with it. Otherwise, the constructed optional is empty.

◆ optional() [3/11]

template<class T>
TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::optional ( optional< T > && rhs)
default

Move constructor

If rhs contains a value, the stored value is direct-initialized with it. Otherwise, the constructed optional is empty.

◆ optional() [4/11]

template<class T>
template<class... Args>
nonstd::optional< T >::optional ( detail::enable_if_t< std::is_constructible< T, Args... >::value, in_place_t > ,
Args &&... args )
inlineexplicitconstexpr

Constructs the stored value in-place using the given arguments.

Definition at line 864 of file optional.hpp.

◆ optional() [5/11]

template<class T>
template<class U, class... Args>
TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::optional ( detail::enable_if_t< std::is_constructible< T, std::initializer_list< U > &, Args &&... >::value, in_place_t > ,
std::initializer_list< U > il,
Args &&... args )
inlineexplicit

Definition at line 868 of file optional.hpp.

◆ optional() [6/11]

template<class T>
template<class U = T, detail::enable_if_t< std::is_convertible< U &&, T >::value > * = nullptr, detail::enable_forward_value< T, U > * = nullptr>
nonstd::optional< T >::optional ( U && u)
inlineconstexpr

Constructs the stored value with u.

Definition at line 877 of file optional.hpp.

◆ optional() [7/11]

template<class T>
template<class U = T, detail::enable_if_t<!std::is_convertible< U &&, T >::value > * = nullptr, detail::enable_forward_value< T, U > * = nullptr>
nonstd::optional< T >::optional ( U && u)
inlineexplicitconstexpr

Definition at line 882 of file optional.hpp.

◆ optional() [8/11]

template<class T>
template<class U, detail::enable_from_other< T, U, const U & > * = nullptr, detail::enable_if_t< std::is_convertible< const U &, T >::value > * = nullptr>
nonstd::optional< T >::optional ( const optional< U > & rhs)
inline

Converting copy constructor.

Definition at line 888 of file optional.hpp.

◆ optional() [9/11]

template<class T>
template<class U, detail::enable_from_other< T, U, const U & > * = nullptr, detail::enable_if_t<!std::is_convertible< const U &, T >::value > * = nullptr>
nonstd::optional< T >::optional ( const optional< U > & rhs)
inlineexplicit

Definition at line 896 of file optional.hpp.

◆ optional() [10/11]

template<class T>
template<class U, detail::enable_from_other< T, U, U && > * = nullptr, detail::enable_if_t< std::is_convertible< U &&, T >::value > * = nullptr>
nonstd::optional< T >::optional ( optional< U > && rhs)
inline

Converting move constructor.

Definition at line 904 of file optional.hpp.

◆ optional() [11/11]

template<class T>
template<class U, detail::enable_from_other< T, U, U && > * = nullptr, detail::enable_if_t<!std::is_convertible< U &&, T >::value > * = nullptr>
nonstd::optional< T >::optional ( optional< U > && rhs)
inlineexplicit

Definition at line 911 of file optional.hpp.

Member Function Documentation

◆ and_then() [1/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T & > nonstd::optional< T >::and_then ( F && f) &
inline

Carries out some operation which returns an optional on the stored object if there is one.

Definition at line 625 of file optional.hpp.

◆ and_then() [2/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T && > nonstd::optional< T >::and_then ( F && f) &&
inline

Definition at line 632 of file optional.hpp.

◆ and_then() [3/4]

template<class T>
template<class F>
detail::invoke_result_t< F, const T & > nonstd::optional< T >::and_then ( F && f) const &
inlineconstexpr

Definition at line 639 of file optional.hpp.

◆ and_then() [4/4]

template<class T>
template<class F>
detail::invoke_result_t< F, const T && > nonstd::optional< T >::and_then ( F && f) const &&
inlineconstexpr

Definition at line 647 of file optional.hpp.

◆ conjunction()

template<class T>
template<class U>
optional< typename std::decay< U >::type > nonstd::optional< T >::conjunction ( U && u) const
inlineconstexpr

Returns u if *this has a value, otherwise an empty optional.

Definition at line 810 of file optional.hpp.

◆ disjunction() [1/8]

template<class T>
TL_OPTIONAL_11_CONSTEXPR optional nonstd::optional< T >::disjunction ( const optional< T > & rhs) &
inline

Returns rhs if *this is empty, otherwise the current value.

Definition at line 816 of file optional.hpp.

◆ disjunction() [2/8]

template<class T>
TL_OPTIONAL_11_CONSTEXPR optional nonstd::optional< T >::disjunction ( const optional< T > & rhs) &&
inline

Definition at line 820 of file optional.hpp.

◆ disjunction() [3/8]

template<class T>
optional nonstd::optional< T >::disjunction ( const optional< T > & rhs) const &
inlineconstexpr

Definition at line 818 of file optional.hpp.

◆ disjunction() [4/8]

template<class T>
optional nonstd::optional< T >::disjunction ( const optional< T > & rhs) const &&
inlineconstexpr

Definition at line 823 of file optional.hpp.

◆ disjunction() [5/8]

template<class T>
TL_OPTIONAL_11_CONSTEXPR optional nonstd::optional< T >::disjunction ( optional< T > && rhs) &
inline

Definition at line 826 of file optional.hpp.

◆ disjunction() [6/8]

template<class T>
TL_OPTIONAL_11_CONSTEXPR optional nonstd::optional< T >::disjunction ( optional< T > && rhs) &&
inline

Definition at line 830 of file optional.hpp.

◆ disjunction() [7/8]

template<class T>
optional nonstd::optional< T >::disjunction ( optional< T > && rhs) const &
inlineconstexpr

Definition at line 828 of file optional.hpp.

◆ disjunction() [8/8]

template<class T>
optional nonstd::optional< T >::disjunction ( optional< T > && rhs) const &&
inlineconstexpr

Definition at line 833 of file optional.hpp.

◆ emplace() [1/2]

template<class T>
template<class... Args>
T & nonstd::optional< T >::emplace ( Args &&... args)
inline

Constructs the value in-place, destroying the current one if there is one.

Definition at line 999 of file optional.hpp.

◆ emplace() [2/2]

template<class T>
template<class U, class... Args>
detail::enable_if_t< std::is_constructible< T, std::initializer_list< U > &, Args &&... >::value, T & > nonstd::optional< T >::emplace ( std::initializer_list< U > il,
Args &&... args )
inline

Definition at line 1008 of file optional.hpp.

◆ has_value()

template<class T>
bool nonstd::optional< T >::has_value ( ) const
inlineconstexprnoexcept

Returns whether or not the optional has a value.

Definition at line 1054 of file optional.hpp.

◆ map() [1/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional & >(), std::declval< F && >())) nonstd::optional< T >::map ( F && f) &
inline

Carries out some operation on the stored object if there is one.

Definition at line 667 of file optional.hpp.

◆ map() [2/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional && >(), std::declval< F && >())) nonstd::optional< T >::map ( F && f) &&
inline

Definition at line 671 of file optional.hpp.

◆ map() [3/4]

template<class T>
template<class F>
decltype(optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) nonstd::optional< T >::map ( F && f) const &
inlineconstexpr

Definition at line 675 of file optional.hpp.

◆ map() [4/4]

template<class T>
template<class F>
decltype(optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) nonstd::optional< T >::map ( F && f) const &&
inlineconstexpr

Definition at line 680 of file optional.hpp.

◆ map_or() [1/4]

template<class T>
template<class F, class U>
U nonstd::optional< T >::map_or ( F && f,
U && u ) &
inline

Maps the stored value with f if there is one, otherwise returns u.

Definition at line 771 of file optional.hpp.

◆ map_or() [2/4]

template<class T>
template<class F, class U>
U nonstd::optional< T >::map_or ( F && f,
U && u ) &&
inline

Definition at line 775 of file optional.hpp.

◆ map_or() [3/4]

template<class T>
template<class F, class U>
U nonstd::optional< T >::map_or ( F && f,
U && u ) const &
inline

Definition at line 779 of file optional.hpp.

◆ map_or() [4/4]

template<class T>
template<class F, class U>
U nonstd::optional< T >::map_or ( F && f,
U && u ) const &&
inline

Definition at line 784 of file optional.hpp.

◆ map_or_else() [1/4]

template<class T>
template<class F, class U>
detail::invoke_result_t< U > nonstd::optional< T >::map_or_else ( F && f,
U && u ) &
inline

Maps the stored value with f if there is one, otherwise calls u and returns the result.

Definition at line 791 of file optional.hpp.

◆ map_or_else() [2/4]

template<class T>
template<class F, class U>
detail::invoke_result_t< U > nonstd::optional< T >::map_or_else ( F && f,
U && u ) &&
inline

Definition at line 795 of file optional.hpp.

◆ map_or_else() [3/4]

template<class T>
template<class F, class U>
detail::invoke_result_t< U > nonstd::optional< T >::map_or_else ( F && f,
U && u ) const &
inline

Definition at line 799 of file optional.hpp.

◆ map_or_else() [4/4]

template<class T>
template<class F, class U>
detail::invoke_result_t< U > nonstd::optional< T >::map_or_else ( F && f,
U && u ) const &&
inline

Definition at line 804 of file optional.hpp.

◆ operator bool()

template<class T>
nonstd::optional< T >::operator bool ( ) const
inlineexplicitconstexprnoexcept

Definition at line 1056 of file optional.hpp.

◆ operator*() [1/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T & nonstd::optional< T >::operator* ( ) &
inline

Returns the stored value.

Definition at line 1043 of file optional.hpp.

◆ operator*() [2/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T && nonstd::optional< T >::operator* ( ) &&
inline

Definition at line 1047 of file optional.hpp.

◆ operator*() [3/4]

template<class T>
const T & nonstd::optional< T >::operator* ( ) const &
inlineconstexpr

Definition at line 1045 of file optional.hpp.

◆ operator*() [4/4]

template<class T>
const T && nonstd::optional< T >::operator* ( ) const &&
inlineconstexpr

Definition at line 1050 of file optional.hpp.

◆ operator->() [1/2]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T * nonstd::optional< T >::operator-> ( )
inline

Definition at line 1040 of file optional.hpp.

◆ operator->() [2/2]

template<class T>
const T * nonstd::optional< T >::operator-> ( ) const
inlineconstexpr

Returns a pointer to the stored value.

Definition at line 1038 of file optional.hpp.

◆ operator=() [1/6]

template<class T>
optional & nonstd::optional< T >::operator= ( const optional< T > & rhs)
default

Copy assignment.

Copies the value from rhs if there is one. Otherwise resets the stored value in *this.

◆ operator=() [2/6]

template<class T>
template<class U, detail::enable_assign_from_other< T, U, const U & > * = nullptr>
optional & nonstd::optional< T >::operator= ( const optional< U > & rhs)
inline

Converting copy assignment operator.

Copies the value from rhs if there is one. Otherwise resets the stored value in *this.

Definition at line 960 of file optional.hpp.

◆ operator=() [3/6]

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

Assignment to empty.

Destroys the current value if there is one.

Definition at line 923 of file optional.hpp.

◆ operator=() [4/6]

template<class T>
optional & nonstd::optional< T >::operator= ( optional< T > && rhs)
default

Move assignment.

Moves the value from rhs if there is one. Otherwise resets the stored value in *this.

◆ operator=() [5/6]

template<class T>
template<class U, detail::enable_assign_from_other< T, U, U > * = nullptr>
optional & nonstd::optional< T >::operator= ( optional< U > && rhs)
inline

Converting move assignment operator.

Moves the value from rhs if there is one. Otherwise resets the stored value in *this.

Definition at line 981 of file optional.hpp.

◆ operator=() [6/6]

template<class T>
template<class U = T, detail::enable_assign_forward< T, U > * = nullptr>
optional & nonstd::optional< T >::operator= ( U && u)
inline

Assigns the stored value from u, destroying the old value if there was one.

Definition at line 946 of file optional.hpp.

◆ or_else() [1/8]

template<class T>
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::or_else ( F && f) &
inline

Definition at line 728 of file optional.hpp.

◆ or_else() [2/8]

template<class T>
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::or_else ( F && f) &
inline

Calls f if the optional is empty.

Definition at line 720 of file optional.hpp.

◆ or_else() [3/8]

template<class T>
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::or_else ( F && f) &&
inline

Definition at line 740 of file optional.hpp.

◆ or_else() [4/8]

template<class T>
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > nonstd::optional< T >::or_else ( F && f) &&
inline

Definition at line 732 of file optional.hpp.

◆ or_else() [5/8]

template<class T>
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > TL_OPTIONAL_11_CONSTEXPR nonstd::optional< T >::or_else ( F && f) const &
inline

Definition at line 752 of file optional.hpp.

◆ or_else() [6/8]

template<class T>
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > nonstd::optional< T >::or_else ( F && f) const &
inline

Definition at line 744 of file optional.hpp.

◆ or_else() [7/8]

template<class T>
template<class F, detail::disable_if_ret_void< F > * = nullptr>
optional< T > nonstd::optional< T >::or_else ( F && f) const &&
inline

Definition at line 765 of file optional.hpp.

◆ or_else() [8/8]

template<class T>
template<class F, detail::enable_if_ret_void< F > * = nullptr>
optional< T > nonstd::optional< T >::or_else ( F && f) const &&
inline

Definition at line 757 of file optional.hpp.

◆ reset()

template<class T>
void nonstd::optional< T >::reset ( )
inlinenoexcept

Destroys the stored value if one exists, making the optional empty.

Definition at line 1097 of file optional.hpp.

◆ swap()

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

Swaps this optional with the other.

If neither optionals have a value, nothing happens. If both have a value, the values are swapped. If one has a value, it is moved to the other and the movee is left valueless.

Definition at line 1021 of file optional.hpp.

◆ take()

template<class T>
optional nonstd::optional< T >::take ( )
inline

Takes the value out of the optional, leaving it empty.

Definition at line 837 of file optional.hpp.

◆ transform() [1/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional & >(), std::declval< F && >())) nonstd::optional< T >::transform ( F && f) &
inline

Carries out some operation on the stored object if there is one.

Definition at line 698 of file optional.hpp.

◆ transform() [2/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(optional_map_impl(std::declval< optional && >(), std::declval< F && >())) nonstd::optional< T >::transform ( F && f) &&
inline

Definition at line 703 of file optional.hpp.

◆ transform() [3/4]

template<class T>
template<class F>
decltype(optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) nonstd::optional< T >::transform ( F && f) const &
inlineconstexpr

Definition at line 707 of file optional.hpp.

◆ transform() [4/4]

template<class T>
template<class F>
decltype(optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) nonstd::optional< T >::transform ( F && f) const &&
inlineconstexpr

Definition at line 713 of file optional.hpp.

◆ value() [1/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T & nonstd::optional< T >::value ( ) &
inline

Returns the contained value if there is one, otherwise throws bad_optional_access.

Definition at line 1059 of file optional.hpp.

◆ value() [2/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T && nonstd::optional< T >::value ( ) &&
inline

Definition at line 1069 of file optional.hpp.

◆ value() [3/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR const T & nonstd::optional< T >::value ( ) const &
inline

Definition at line 1064 of file optional.hpp.

◆ value() [4/4]

template<class T>
TL_OPTIONAL_11_CONSTEXPR const T && nonstd::optional< T >::value ( ) const &&
inline

Definition at line 1076 of file optional.hpp.

◆ value_or() [1/2]

template<class T>
template<class U>
TL_OPTIONAL_11_CONSTEXPR T nonstd::optional< T >::value_or ( U && u) &&
inline

Definition at line 1090 of file optional.hpp.

◆ value_or() [2/2]

template<class T>
template<class U>
T nonstd::optional< T >::value_or ( U && u) const &
inlineconstexpr

Returns the stored value if there is one, otherwise returns u.

Definition at line 1084 of file optional.hpp.


The documentation for this class was generated from the following file:
  • /home/eyck/Projects/MINRES/SystemC-Components/src/common/nonstd/optional.hpp