proxsuite 0.7.2
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
tl::optional< T & > Class Template Reference

#include <proxsuite/helpers/tl-optional.hpp>

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

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(detail::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(detail::optional_map_impl(std::declval< optional && >(), std::declval< F && >())) map (F &&f) &&
template<class F>
constexpr decltype(detail::optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) map (F &&f) const &
template<class F>
constexpr decltype(detail::optional_map_impl(std::declval< const optional && >(), std::declval< F && >())) map (F &&f) const &&
template<class F>
TL_OPTIONAL_11_CONSTEXPR decltype(detail::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(detail::optional_map_impl(std::declval< optional && >(), std::declval< F && >())) transform (F &&f) &&
template<class F>
constexpr decltype(detail::optional_map_impl(std::declval< const optional & >(), std::declval< F && >())) transform (F &&f) const &
template<class F>
constexpr decltype(detail::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
 Constructs an optional that does not contain a value.
constexpr optional (nullopt_t) noexcept
TL_OPTIONAL_11_CONSTEXPR optional (const optional &rhs) noexcept=default
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) noexcept
 Constructs the stored value with u.
template<class U>
constexpr optional (const optional< U > &rhs) noexcept
 ~optional ()=default
 No-op.
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)
 Rebinds this optional to u.
template<class U>
optionaloperator= (const optional< U > &rhs) noexcept
template<class U = T, detail::enable_if_t< !detail::is_optional< detail::decay_t< U > >::value > * = nullptr>
optionalemplace (U &&u) noexcept
 Rebinds this optional to u.
void swap (optional &rhs) noexcept
constexpr const T * operator-> () const noexcept
 Returns a pointer to the stored value.
TL_OPTIONAL_11_CONSTEXPR T * operator-> () noexcept
TL_OPTIONAL_11_CONSTEXPR T & operator* () noexcept
 Returns the stored value.
constexpr const T & operator* () const noexcept
constexpr bool has_value () const noexcept
constexpr operator bool () const noexcept
TL_OPTIONAL_11_CONSTEXPR T & value ()
TL_OPTIONAL_11_CONSTEXPR const T & value () const
template<class U>
constexpr T value_or (U &&u) const &noexcept
 Returns the stored value if there is one, otherwise returns u
template<class U>
TL_OPTIONAL_11_CONSTEXPRvalue_or (U &&u) &&noexcept
 \group value_or
void reset () noexcept
 Destroys the stored value if one exists, making the optional empty.

Detailed Description

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

Definition at line 1874 of file tl-optional.hpp.

Member Typedef Documentation

◆ value_type

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

Definition at line 2304 of file tl-optional.hpp.

Constructor & Destructor Documentation

◆ optional() [1/6]

template<class T>
tl::optional< T & >::optional()
inlineconstexprnoexcept

Constructs an optional that does not contain a value.

Definition at line 2307 of file tl-optional.hpp.

◆ optional() [2/6]

template<class T>
tl::optional< T & >::optional(nullopt_t)
inlineconstexprnoexcept

Definition at line 2312 of file tl-optional.hpp.

◆ optional() [3/6]

template<class T>
TL_OPTIONAL_11_CONSTEXPR tl::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.

◆ optional() [4/6]

template<class T>
TL_OPTIONAL_11_CONSTEXPR tl::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() [5/6]

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

Constructs the stored value with u.

Definition at line 2333 of file tl-optional.hpp.

◆ optional() [6/6]

template<class T>
template<class U>
tl::optional< T & >::optional(const optional< U > &rhs)
inlineexplicitconstexprnoexcept

Definition at line 2340 of file tl-optional.hpp.

◆ ~optional()

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

No-op.

Member Function Documentation

◆ and_then() [1/4]

template<class T>
template<class F>
TL_OPTIONAL_11_CONSTEXPR detail::invoke_result_t< F, T & > tl::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 1935 of file tl-optional.hpp.

◆ and_then() [2/4]

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

Definition at line 1946 of file tl-optional.hpp.

◆ and_then() [3/4]

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

Definition at line 1957 of file tl-optional.hpp.

◆ and_then() [4/4]

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

Definition at line 1969 of file tl-optional.hpp.

◆ map() [1/4]

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

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

Definition at line 2013 of file tl-optional.hpp.

◆ map() [2/4]

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

Definition at line 2022 of file tl-optional.hpp.

◆ map() [3/4]

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

Definition at line 2030 of file tl-optional.hpp.

◆ map() [4/4]

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

Definition at line 2039 of file tl-optional.hpp.

◆ transform() [1/4]

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

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

Definition at line 2078 of file tl-optional.hpp.

◆ transform() [2/4]

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

\group map \synopsis template <class F> auto transform(F &&f) &&;

Definition at line 2089 of file tl-optional.hpp.

◆ transform() [3/4]

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

Definition at line 2097 of file tl-optional.hpp.

◆ transform() [4/4]

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

Definition at line 2106 of file tl-optional.hpp.

◆ or_else() [1/8]

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

Calls f if the optional is empty.

Definition at line 2115 of file tl-optional.hpp.

◆ or_else() [2/8]

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

Definition at line 2125 of file tl-optional.hpp.

◆ or_else() [3/8]

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

Definition at line 2131 of file tl-optional.hpp.

◆ or_else() [4/8]

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

Definition at line 2141 of file tl-optional.hpp.

◆ or_else() [5/8]

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

Definition at line 2147 of file tl-optional.hpp.

◆ or_else() [6/8]

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

Definition at line 2157 of file tl-optional.hpp.

◆ or_else() [7/8]

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

Definition at line 2164 of file tl-optional.hpp.

◆ or_else() [8/8]

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

Definition at line 2174 of file tl-optional.hpp.

◆ map_or() [1/4]

template<class T>
template<class F, class U>
U tl::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 2182 of file tl-optional.hpp.

◆ map_or() [2/4]

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

Definition at line 2189 of file tl-optional.hpp.

◆ map_or() [3/4]

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

Definition at line 2196 of file tl-optional.hpp.

◆ map_or() [4/4]

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

Definition at line 2204 of file tl-optional.hpp.

◆ map_or_else() [1/4]

template<class T>
template<class F, class U>
detail::invoke_result_t< U > tl::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 2214 of file tl-optional.hpp.

◆ map_or_else() [2/4]

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

Definition at line 2221 of file tl-optional.hpp.

◆ map_or_else() [3/4]

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

Definition at line 2228 of file tl-optional.hpp.

◆ map_or_else() [4/4]

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

Definition at line 2236 of file tl-optional.hpp.

◆ conjunction()

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

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

Definition at line 2245 of file tl-optional.hpp.

◆ disjunction() [1/8]

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

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

Definition at line 2252 of file tl-optional.hpp.

◆ disjunction() [2/8]

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

Definition at line 2257 of file tl-optional.hpp.

◆ disjunction() [3/8]

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

Definition at line 2262 of file tl-optional.hpp.

◆ disjunction() [4/8]

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

Definition at line 2268 of file tl-optional.hpp.

◆ disjunction() [5/8]

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

Definition at line 2274 of file tl-optional.hpp.

◆ disjunction() [6/8]

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

Definition at line 2279 of file tl-optional.hpp.

◆ disjunction() [7/8]

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

Definition at line 2284 of file tl-optional.hpp.

◆ disjunction() [8/8]

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

Definition at line 2290 of file tl-optional.hpp.

◆ take()

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

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

Definition at line 2297 of file tl-optional.hpp.

◆ operator=() [1/4]

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

Assignment to empty.

Destroys the current value if there is one.

Definition at line 2351 of file tl-optional.hpp.

◆ operator=() [2/4]

template<class T>
optional & tl::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.

◆ operator=() [3/4]

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

Rebinds this optional to u.

Definition at line 2367 of file tl-optional.hpp.

◆ operator=() [4/4]

template<class T>
template<class U>
optional & tl::optional< T & >::operator=(const optional< U > &rhs)
inlinenoexcept

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 2379 of file tl-optional.hpp.

◆ emplace()

template<class T>
template<class U = T, detail::enable_if_t< !detail::is_optional< detail::decay_t< U > >::value > * = nullptr>
optional & tl::optional< T & >::emplace(U &&u)
inlinenoexcept

Rebinds this optional to u.

Definition at line 2389 of file tl-optional.hpp.

◆ swap()

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

Definition at line 2394 of file tl-optional.hpp.

◆ operator->() [1/2]

template<class T>
const T * tl::optional< T & >::operator->()const
inlineconstexprnoexcept

Returns a pointer to the stored value.

Definition at line 2397 of file tl-optional.hpp.

◆ operator->() [2/2]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T * tl::optional< T & >::operator->()
inlinenoexcept

Definition at line 2399 of file tl-optional.hpp.

◆ operator*() [1/2]

template<class T>
TL_OPTIONAL_11_CONSTEXPR T & tl::optional< T & >::operator*()
inlinenoexcept

Returns the stored value.

Definition at line 2402 of file tl-optional.hpp.

◆ operator*() [2/2]

template<class T>
const T & tl::optional< T & >::operator*()const
inlineconstexprnoexcept

Definition at line 2404 of file tl-optional.hpp.

◆ has_value()

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

Definition at line 2406 of file tl-optional.hpp.

◆ operator bool()

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

Definition at line 2408 of file tl-optional.hpp.

◆ value() [1/2]

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

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

Definition at line 2415 of file tl-optional.hpp.

◆ value() [2/2]

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

Definition at line 2421 of file tl-optional.hpp.

◆ value_or() [1/2]

template<class T>
template<class U>
T tl::optional< T & >::value_or(U &&u)const &
inlineconstexprnoexcept

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

Definition at line 2430 of file tl-optional.hpp.

◆ value_or() [2/2]

template<class T>
template<class U>
TL_OPTIONAL_11_CONSTEXPR T tl::optional< T & >::value_or(U &&u)&&
inlinenoexcept

\group value_or

Definition at line 2440 of file tl-optional.hpp.

◆ reset()

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

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

Definition at line 2449 of file tl-optional.hpp.


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