#include <Containers/Reference.h>
template<class T>
Reference class
Lightweight non-owning reference wrapper.
Equivalent to std::operator()
and there are no equivalents to std::
This class is exclusively for l-value references.
Constructors, destructors, conversion operators
- Reference(T& reference) constexpr noexcept
-
template<class U, class = decltype(Implementation::ReferenceConverter<T, U>::from(std::Reference(U other) constexpr noexcept
declval<U>()))> - Construct a reference from external representation.
- Reference(T&&) deleted
- Construction from r-value references is not allowed.
-
template<class U, class = typename std::Reference(Reference<U> other) constexpr noexcept
enable_if<std:: is_base_of<T, U>::value>::type> - Construct a reference from another of a derived type.
-
template<class U, class = decltype(Implementation::ReferenceConverter<T, U>::to(std::operator U() const constexpr
declval<Reference<T>>()))> - Convert the reference to external representation.
- operator T&() const constexpr
- Underlying reference.
- operator Reference<const T>() const constexpr
Public functions
- auto get() const -> T& constexpr
- Underlying reference.
- auto operator->() const -> T* constexpr
- Access the underlying reference.
- auto operator*() const -> T& constexpr
- Access the underlying reference.
Function documentation
template<class T>
template<class U, class = typename std:: enable_if<std:: is_base_of<T, U>::value>::type>
Death:: Containers:: Reference<T>:: Reference(Reference<U> other) constexpr noexcept
Construct a reference from another of a derived type.
Expects that T
is a base of U
.
template<class T>
Death:: Containers:: Reference<T>:: operator Reference<const T>() const constexpr
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<class T>
template<class T>
Reference<T> reference(T& reference) constexpr
Make a reference wrapper.
Convenience alternative to Reference::Reference(T&).
Useful for example when iterating a list of variables that need to be modified in-place, and where the code would otherwise have to be extra verbose or would fall back to raw pointers and risk them getting nullptr
.