OGLplus  (0.59.0) a C++ wrapper for rendering APIs

eagine::optional_reference_wrapper< T > Class Template Reference

Optional reference to an instance of type T. More...

#include <eagine/optional_ref.hpp>

Public Member Functions

 optional_reference_wrapper (T &ref) noexcept
 Construction from a reference to value of type T.
 
 optional_reference_wrapper (optional_reference_wrapper &&) noexcept=default
 Move constructor.
 
 optional_reference_wrapper (const optional_reference_wrapper &)=default
 Copy constructor.
 
auto operator= (optional_reference_wrapper &&) noexcept -> optional_reference_wrapper &=default
 Move assignment operator.
 
auto operator= (const optional_reference_wrapper &) -> optional_reference_wrapper &=default
 Copy assignment operator.
 
constexpr optional_reference_wrapper (nothing_t) noexcept
 Construction from nothing. More...
 
constexpr optional_reference_wrapper (std::nullptr_t) noexcept
 Construction from nullptr. More...
 
auto is_valid () const noexcept -> bool
 Indicates if this stores a valid reference.
 
 operator bool () const noexcept
 Indicates if this stores a valid reference. More...
 
auto get () const noexcept -> T &
 Returns the stored reference. More...
 
auto value () const noexcept -> const T &
 Returns the stored value. More...
 
template<typename U >
auto value_or (U &&fallback) const noexcept -> std::enable_if_t< std::is_convertible_v< U, T >, T >
 Returns the stored value if valid or fallback otherwise. More...
 
 operator T& () const noexcept
 Returns the stored reference. More...
 

Friends

auto operator== (const optional_reference_wrapper &l, const T &r) -> tribool
 Tri-state equality comparison of the referred instance with a value.
 
auto operator!= (const optional_reference_wrapper &l, const T &r) -> tribool
 Tri-state nonequality comparison of the referred instance with a value.
 

Detailed Description

template<typename T>
class eagine::optional_reference_wrapper< T >

Optional reference to an instance of type T.

See also
valid_if

Constructor & Destructor Documentation

◆ optional_reference_wrapper() [1/2]

template<typename T >
constexpr eagine::optional_reference_wrapper< T >::optional_reference_wrapper ( nothing_t  )
inlineconstexprnoexcept

Construction from nothing.

Postcondition
!is_valid()

◆ optional_reference_wrapper() [2/2]

template<typename T >
constexpr eagine::optional_reference_wrapper< T >::optional_reference_wrapper ( std::nullptr_t  )
inlineconstexprnoexcept

Construction from nullptr.

Postcondition
!is_valid()

Member Function Documentation

◆ get()

template<typename T >
auto eagine::optional_reference_wrapper< T >::get ( ) const -> T&
inlinenoexcept

Returns the stored reference.

Precondition
is_valid()

Referenced by eagine::optional_reference_wrapper< T >::operator T&().

◆ operator bool()

template<typename T >
eagine::optional_reference_wrapper< T >::operator bool ( ) const
inlineexplicitnoexcept

Indicates if this stores a valid reference.

See also
is_valid

◆ operator T&()

template<typename T >
eagine::optional_reference_wrapper< T >::operator T& ( ) const
inlineexplicitnoexcept

Returns the stored reference.

See also
get

◆ value()

template<typename T >
auto eagine::optional_reference_wrapper< T >::value ( ) const -> const T&
inlinenoexcept

Returns the stored value.

Precondition
is_valid()

◆ value_or()

template<typename T >
template<typename U >
auto eagine::optional_reference_wrapper< T >::value_or ( U &&  fallback) const -> std::enable_if_t<std::is_convertible_v<U, T>, T>
inlinenoexcept

Returns the stored value if valid or fallback otherwise.

See also
is_valid

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

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).