Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
sol::optional< T & > Class Template Reference

#include <sol.hpp>

Public Types

using value_type = T &
 

Public Member Functions

template<class F >
SOL_TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T & > and_then (F &&f)&
 
template<class F >
SOL_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 U >
constexpr optional< typename std::decay< U >::typeconjunction (U &&u) const
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional disjunction (const optional &rhs)&
 
constexpr optional disjunction (const optional &rhs) const &
 disjunction More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional disjunction (const optional &rhs)&&
 disjunction More...
 
constexpr optional disjunction (const optional &rhs) const &&
 disjunction More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional disjunction (optional &&rhs)&
 disjunction More...
 
constexpr optional disjunction (optional &&rhs) const &
 disjunction More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional disjunction (optional &&rhs)&&
 disjunction More...
 
constexpr optional disjunction (optional &&rhs) const &&
 disjunction More...
 
template<class... Args>
T & emplace (Args &&...args) noexcept
 
constexpr bool has_value () const noexcept
 
template<class F , class U >
map_or (F &&f, U &&u)&
 Maps the stored value with f if there is one, otherwise returns u. More...
 
template<class F , class U >
map_or (F &&f, U &&u)&&
 map_or More...
 
template<class F , class U >
map_or (F &&f, U &&u) const &
 map_or More...
 
template<class F , class U >
map_or (F &&f, U &&u) const &&
 map_or More...
 
template<class F , class U >
detail::invoke_result_t< U > map_or_else (F &&f, U &&u)&
 Maps the stored value with f if there is one, otherwise calls u and returns the result. More...
 
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 &&
 
constexpr operator bool () const noexcept
 has_value More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR T & operator* ()
 
constexpr const T & operator* () const
 
constexpr const T * operator-> () const
 
SOL_TL_OPTIONAL_11_CONSTEXPR T * operator-> ()
 
optionaloperator= (nullopt_t) noexcept
 
optionaloperator= (const optional &rhs)=default
 
template<class U = T, detail::enable_if_t<!detail::is_optional< detail::decay_t< U >>::value > * = nullptr>
optionaloperator= (U &&u)
 
template<class U >
optionaloperator= (const optional< U > &rhs)
 
constexpr optional () noexcept
 
constexpr optional (nullopt_t) noexcept
 ctor_empty More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional (const optional &rhs) noexcept=default
 
SOL_TL_OPTIONAL_11_CONSTEXPR optional (optional &&rhs)=default
 
template<class U = T, detail::enable_if_t<!detail::is_optional< detail::decay_t< U >>::value > * = nullptr>
constexpr optional (U &&u)
 
template<class U >
constexpr optional (const optional< U > &rhs)
 
template<class F , detail::enable_if_ret_void< F > * = nullptr>
optional< T > SOL_TL_OPTIONAL_11_CONSTEXPR or_else (F &&f)&
 Calls f if the optional is empty std::invoke_result_t<F> must be void or convertible to optional<T>. If *this has a value, returns *this. Otherwise, if f returns void, calls std::forward<F>(f) and returns std::nullopt. Otherwise, returns std::forward<F>(f)(). More...
 
template<class F , detail::disable_if_ret_void< F > * = nullptr>
optional< T > SOL_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 > SOL_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 > SOL_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 &&
 
void reset () noexcept
 Destroys the stored value if one exists, making the optional empty. More...
 
void swap (optional &rhs) noexcept
 
optional take ()&
 
optional take () const &
 take More...
 
optional take ()&&
 take More...
 
optional take () const &&
 take More...
 
SOL_TL_OPTIONAL_11_CONSTEXPR T & value ()
 
SOL_TL_OPTIONAL_11_CONSTEXPR const T & value () const
 
template<class U >
constexpr T & value_or (U &&u) const
 
 ~optional ()=default
 No-op. More...
 

Public Attributes

template<class F >
decltype(detail::optional_map_impl(std::declval< optional & >(), std::declval< F && >())) SOL_TL_OPTIONAL_11_CONSTEXPR map (F &&f)&
 Carries out some operation on the stored object if there is one. More...
 
template<class F >
decltype(detail::optional_map_impl(std::declval< optional && >(), std::declval< F && >())) SOL_TL_OPTIONAL_11_CONSTEXPR map (F &&f)&&
 
template<class F >
decltype(detail::optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) constexpr map (F &&f) const &
 
template<class F >
decltype(detail::optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) constexpr map (F &&f) const &&
 

Private Attributes

T * m_value
 

Detailed Description

template<class T>
class sol::optional< T & >

Specialization for when T is a reference. optional<T&> acts similarly to a T*, but provides more operations and shows intent more clearly.

Examples:

int i = 42;
*o == 42; //true
i = 12;
*o = 12; //true
&*o == &i; //true

Assignment has rebind semantics rather than assign-through semantics:

int j = 8;
o = j;
&*o == &j; //true

Definition at line 5569 of file sol.hpp.

Member Typedef Documentation

template<class T >
using sol::optional< T & >::value_type = T&

Definition at line 5977 of file sol.hpp.

Constructor & Destructor Documentation

template<class T >
constexpr sol::optional< T & >::optional ( )
inlinenoexcept

Constructs an optional that does not contain a value. ctor_empty

Definition at line 5981 of file sol.hpp.

template<class T >
constexpr sol::optional< T & >::optional ( nullopt_t  )
inlinenoexcept

ctor_empty

Definition at line 5985 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR sol::optional< T & >::optional ( const optional< T & > &  rhs)
defaultnoexcept

Copy constructor

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

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR sol::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.

template<class T >
template<class U = T, detail::enable_if_t<!detail::is_optional< detail::decay_t< U >>::value > * = nullptr>
constexpr sol::optional< T & >::optional ( U &&  u)
inline

Constructs the stored value with u. template <class u="T"> constexpr optional(U &&u);

Definition at line 6003 of file sol.hpp.

template<class T >
template<class U >
constexpr sol::optional< T & >::optional ( const optional< U > &  rhs)
inlineexplicit

Definition at line 6009 of file sol.hpp.

template<class T >
sol::optional< T & >::~optional ( )
default

No-op.

Member Function Documentation

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

and_then Carries out some operation which returns an optional on the stored object if there is one. std::invoke(std::forward<F>(f), value()) returns a std::optional<U> for some U.

Returns
Let U be the result of std::invoke(std::forward<F>(f), value()). Returns a std::optional<U>. The return value is empty if *this is empty, otherwise the return value of std::invoke(std::forward<F>(f), value()) is returned. and_then template <class f>=""> auto and_then(F &&f) &;

Definition at line 5633 of file sol.hpp.

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

and_then template <class f>=""> auto and_then(F &&f) &&;

Definition at line 5643 of file sol.hpp.

template<class T >
template<class F >
constexpr detail::invoke_result_t<F, const T&> sol::optional< T & >::and_then ( F &&  f) const
inline

and_then template <class f>=""> auto and_then(F &&f) const &;

Definition at line 5653 of file sol.hpp.

template<class T >
template<class F >
constexpr detail::invoke_result_t<F, const T&> sol::optional< T & >::and_then ( F &&  f) const
inline

and_then template <class f>=""> auto and_then(F &&f) const &&;

Definition at line 5664 of file sol.hpp.

template<class T >
template<class U >
constexpr optional<typename std::decay<U>::type> sol::optional< T & >::conjunction ( U &&  u) const
inline
Returns
u if *this has a value, otherwise an empty optional.

Definition at line 5896 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR optional sol::optional< T & >::disjunction ( const optional< T & > &  rhs)
inline
Returns
rhs if *this is empty, otherwise the current value. disjunction

Definition at line 5903 of file sol.hpp.

template<class T >
constexpr optional sol::optional< T & >::disjunction ( const optional< T & > &  rhs) const
inline

disjunction

Definition at line 5908 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR optional sol::optional< T & >::disjunction ( const optional< T & > &  rhs)
inline

disjunction

Definition at line 5913 of file sol.hpp.

template<class T >
constexpr optional sol::optional< T & >::disjunction ( const optional< T & > &  rhs) const
inline

disjunction

Definition at line 5919 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR optional sol::optional< T & >::disjunction ( optional< T & > &&  rhs)
inline

disjunction

Definition at line 5925 of file sol.hpp.

template<class T >
constexpr optional sol::optional< T & >::disjunction ( optional< T & > &&  rhs) const
inline

disjunction

Definition at line 5930 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR optional sol::optional< T & >::disjunction ( optional< T & > &&  rhs)
inline

disjunction

Definition at line 5935 of file sol.hpp.

template<class T >
constexpr optional sol::optional< T & >::disjunction ( optional< T & > &&  rhs) const
inline

disjunction

Definition at line 5941 of file sol.hpp.

template<class T >
template<class... Args>
T& sol::optional< T & >::emplace ( Args &&...  args)
inlinenoexcept

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

emplace

Definition at line 6055 of file sol.hpp.

template<class T >
constexpr bool sol::optional< T & >::has_value ( ) const
inlinenoexcept
Returns
whether or not the optional has a value has_value

Definition at line 6102 of file sol.hpp.

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

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

If there is a value stored, then f is called with **this and the value is returned. Otherwise u is returned.

map_or

Definition at line 5830 of file sol.hpp.

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

map_or

Definition at line 5836 of file sol.hpp.

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

map_or

Definition at line 5842 of file sol.hpp.

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

map_or

Definition at line 5849 of file sol.hpp.

template<class T >
template<class F , class U >
detail::invoke_result_t<U> sol::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.

If there is a value stored, then f is called with **this and the value is returned. Otherwise std::forward<U>(u)() is returned.

map_or_else template <class F, class U> map_or_else(F &&f, U &&u) &;

Definition at line 5864 of file sol.hpp.

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

map_or_else template <class F, class U> map_or_else(F &&f, U &&u) &&;

Definition at line 5872 of file sol.hpp.

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

map_or_else template <class F, class U> map_or_else(F &&f, U &&u) const &;

Definition at line 5880 of file sol.hpp.

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

map_or_else template <class F, class U> map_or_else(F &&f, U &&u) const &&;

Definition at line 5889 of file sol.hpp.

template<class T >
constexpr sol::optional< T & >::operator bool ( ) const
inlineexplicitnoexcept

has_value

Definition at line 6107 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR T& sol::optional< T & >::operator* ( )
inline
Returns
the stored value a value is stored deref constexpr T &operator*();

Definition at line 6090 of file sol.hpp.

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

deref constexpr const T &operator*() const;

Definition at line 6096 of file sol.hpp.

template<class T >
constexpr const T* sol::optional< T & >::operator-> ( ) const
inline
Returns
a pointer to the stored value a value is stored pointer constexpr const T *operator->() const;

Definition at line 6076 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR T* sol::optional< T & >::operator-> ( )
inline

pointer constexpr T *operator->();

Definition at line 6082 of file sol.hpp.

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

Assignment to empty.

Destroys the current value if there is one.

Definition at line 6018 of file sol.hpp.

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

Copy assignment.

Rebinds this optional to the referee of rhs if there is one. Otherwise resets the stored value in *this.

template<class T >
template<class U = T, detail::enable_if_t<!detail::is_optional< detail::decay_t< U >>::value > * = nullptr>
optional& sol::optional< T & >::operator= ( U &&  u)
inline

Rebinds this optional to u.

U must be an lvalue reference. optional &operator=(U &&u);

Definition at line 6034 of file sol.hpp.

template<class T >
template<class U >
optional& sol::optional< T & >::operator= ( const optional< U > &  rhs)
inline

Converting copy assignment operator.

Rebinds this optional to the referee of rhs if there is one. Otherwise resets the stored value in *this.

Definition at line 6045 of file sol.hpp.

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

Calls f if the optional is empty std::invoke_result_t<F> must be void or convertible to optional<T>. If *this has a value, returns *this. Otherwise, if f returns void, calls std::forward<F>(f) and returns std::nullopt. Otherwise, returns std::forward<F>(f)().

or_else template <class f>=""> optional<T> or_else (F &&f) &;

Definition at line 5756 of file sol.hpp.

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

Definition at line 5766 of file sol.hpp.

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

or_else template <class f>=""> optional<T> or_else (F &&f) &&;

Definition at line 5773 of file sol.hpp.

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

Definition at line 5783 of file sol.hpp.

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

or_else template <class f>=""> optional<T> or_else (F &&f) const &;

Definition at line 5790 of file sol.hpp.

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

Definition at line 5800 of file sol.hpp.

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

Definition at line 5807 of file sol.hpp.

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

Definition at line 5817 of file sol.hpp.

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

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

Definition at line 6145 of file sol.hpp.

template<class T >
void sol::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 6068 of file sol.hpp.

template<class T >
optional sol::optional< T & >::take ( )
inline

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

Definition at line 5948 of file sol.hpp.

template<class T >
optional sol::optional< T & >::take ( ) const
inline

take

Definition at line 5955 of file sol.hpp.

template<class T >
optional sol::optional< T & >::take ( )
inline

take

Definition at line 5962 of file sol.hpp.

template<class T >
optional sol::optional< T & >::take ( ) const
inline

take

Definition at line 5970 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR T& sol::optional< T & >::value ( )
inline
Returns
the contained value if there is one, otherwise throws [bad_optional_access] value synopsis constexpr T &value();

Definition at line 6115 of file sol.hpp.

template<class T >
SOL_TL_OPTIONAL_11_CONSTEXPR const T& sol::optional< T & >::value ( ) const
inline

value constexpr const T &value() const;

Definition at line 6126 of file sol.hpp.

template<class T >
template<class U >
constexpr T& sol::optional< T & >::value_or ( U &&  u) const
inline
Returns
the stored value if there is one, otherwise returns u value_or

Definition at line 6139 of file sol.hpp.

Member Data Documentation

template<class T >
T* sol::optional< T & >::m_value
private

Definition at line 6150 of file sol.hpp.

template<class T >
template<class F >
decltype(detail::optional_map_impl(std::declval<optional&>(), std::declval<F&&>())) SOL_TL_OPTIONAL_11_CONSTEXPR sol::optional< T & >::map(F &&f)&
inline

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

Returns
Let U be the result of std::invoke(std::forward<F>(f), value()). Returns a std::optional<U>. The return value is empty if *this is empty, otherwise an optional<U> is constructed from the return value of std::invoke(std::forward<F>(f), value()) and is returned.

map template <class f>=""> auto map(F &&f) &;

Definition at line 5719 of file sol.hpp.

template<class T >
template<class F >
decltype(detail::optional_map_impl(std::declval<optional&&>(), std::declval<F&&>())) SOL_TL_OPTIONAL_11_CONSTEXPR sol::optional< T & >::map(F &&f)&&
inline

map template <class f>=""> auto map(F &&f) &&;

Definition at line 5726 of file sol.hpp.

template<class T >
template<class F >
decltype(detail::optional_map_impl(std::declval<const optional&>(), std::declval<F&&>())) constexpr sol::optional< T & >::map(F &&f) const &
inline

map template <class f>=""> auto map(F &&f) const&;

Definition at line 5733 of file sol.hpp.

template<class T >
template<class F >
decltype(detail::optional_map_impl(std::declval<const optional&&>(), std::declval<F&&>())) constexpr sol::optional< T & >::map(F &&f) const &&
inline

map template <class f>=""> auto map(F &&f) const&&;

Definition at line 5741 of file sol.hpp.


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


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 04:02:52