Iros
 
Loading...
Searching...
No Matches
di::ReferenceWrapper< T > Class Template Reference

#include <di/util/reference_wrapper.h>

Public Types

using Value = T
 

Public Member Functions

constexpr ReferenceWrapper (vocab::NullOpt)
 
template<typename U>
requires (!concepts::ReferenceWrapper<meta::Decay<U>> && requires { get_address(util::declval<U>()); })
constexpr ReferenceWrapper (U &&value)
 
constexpr ReferenceWrapper (ReferenceWrapper const &)=default
 
constexpr auto operator= (ReferenceWrapper const &) -> ReferenceWrapper &=default
 
constexpr operator T& () const
 
constexpr auto get () const -> T &
 
template<typename... Args>
requires (concepts::Invocable<T&, Args...>)
constexpr auto operator() (Args &&... args) const -> meta::InvokeResult< T &, Args... >
 

Static Public Member Functions

static constexpr void get_address (T &&)=delete
 

Friends

constexpr friend auto tag_invoke (types::Tag< vocab::is_nullopt >, ReferenceWrapper const &self) -> bool
 
constexpr friend auto tag_invoke (types::Tag< vocab::get_value >, ReferenceWrapper const &self) -> T &
 
constexpr friend void tag_invoke (types::Tag< vocab::set_nullopt >, ReferenceWrapper &self)
 
constexpr friend void tag_invoke (types::Tag< vocab::set_value >, ReferenceWrapper &self, T &value)
 

Member Typedef Documentation

◆ Value

template<typename T>
using di::util::ReferenceWrapper< T >::Value = T

Constructor & Destructor Documentation

◆ ReferenceWrapper() [1/3]

template<typename T>
di::util::ReferenceWrapper< T >::ReferenceWrapper ( vocab::NullOpt )
inlineexplicitconstexpr

◆ ReferenceWrapper() [2/3]

template<typename T>
template<typename U>
requires (!concepts::ReferenceWrapper<meta::Decay<U>> && requires { get_address(util::declval<U>()); })
di::util::ReferenceWrapper< T >::ReferenceWrapper ( U && value)
inlineconstexpr

◆ ReferenceWrapper() [3/3]

template<typename T>
di::util::ReferenceWrapper< T >::ReferenceWrapper ( ReferenceWrapper< T > const & )
constexprdefault

Member Function Documentation

◆ get()

template<typename T>
auto di::util::ReferenceWrapper< T >::get ( ) const -> T&
inlineconstexpr

◆ get_address()

template<typename T>
static constexpr void di::util::ReferenceWrapper< T >::get_address ( T && )
staticconstexprdelete

◆ operator T&()

template<typename T>
di::util::ReferenceWrapper< T >::operator T& ( ) const
inlineconstexpr

◆ operator()()

template<typename T>
template<typename... Args>
requires (concepts::Invocable<T&, Args...>)
auto di::util::ReferenceWrapper< T >::operator() ( Args &&... args) const -> meta::InvokeResult<T&, Args...>
inlineconstexpr

◆ operator=()

template<typename T>
auto di::util::ReferenceWrapper< T >::operator= ( ReferenceWrapper< T > const & ) -> ReferenceWrapper &=default
constexprdefault

Friends And Related Symbol Documentation

◆ tag_invoke [1/4]

template<typename T>
friend auto tag_invoke ( types::Tag< vocab::get_value > ,
ReferenceWrapper< T > const & self ) -> T&
friend

◆ tag_invoke [2/4]

template<typename T>
friend auto tag_invoke ( types::Tag< vocab::is_nullopt > ,
ReferenceWrapper< T > const & self ) -> bool
friend

◆ tag_invoke [3/4]

template<typename T>
friend void tag_invoke ( types::Tag< vocab::set_nullopt > ,
ReferenceWrapper< T > & self )
friend

◆ tag_invoke [4/4]

template<typename T>
friend void tag_invoke ( types::Tag< vocab::set_value > ,
ReferenceWrapper< T > & self,
T & value )
friend

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