|
GEOS
|
#include <ReferenceWrapper.hpp>
Public Member Functions | |
| ReferenceWrapper () | |
| Default constructor sets m_ref to nullptr. | |
| ReferenceWrapper (T &source) noexcept | |
| Constructor that sets m_ref to address of input. More... | |
| ~ReferenceWrapper ()=default | |
| Default destructor. | |
| ReferenceWrapper (ReferenceWrapper const &source) | |
| Copy constructor copies the source m_ref to the new m_ref. More... | |
| ReferenceWrapper (ReferenceWrapper &&source) | |
| Move constructor copies the source m_ref to the new m_ref. More... | |
| ReferenceWrapper & | operator= (ReferenceWrapper const &source) |
| Copy assignment operator. More... | |
| template<typename T_RHS , typename U = T> | |
| std::enable_if< !std::is_const< U >::value, ReferenceWrapper & >::type | operator= (T_RHS const &rhs) |
| Assignment operator. More... | |
| ReferenceWrapper & | operator= (T &&source) |
| Move assignment operator. More... | |
| operator T& () | |
User defined conversion to T &. | |
| operator T const & () const | |
User defined conversion to T const & | |
| void | set (T &source) |
| Set the address that m_ref points to. More... | |
| void | set (T *source) |
| Set the address that m_ref points to. More... | |
| T & | get () |
| Accessor for m_ref. More... | |
| T const & | get () const |
| Const accessor for m_ref. More... | |
| bool | isValid () const |
| Check if reference is initialized. More... | |
| T const * | getPtr () const |
| Const accessor for m_ref. More... | |
| template<typename ... ARGS> | |
| std::result_of< T &(ARGS &&...) >::type | operator() (ARGS &&... args) |
A pass thru parenthesis operator which calls underlying T::operator(). More... | |
| template<typename ... ARGS> | |
| std::result_of< T const &(ARGS &&...) >::type | operator() (ARGS &&... args) const |
A pass thru parenthesis operator which calls underlying T::operator(). More... | |
| Type | that is wrapped |
This class manages a pointer to the templated type, but provides a reference-like interface, thus negating the requirement to dereference the object. The primary use for this is for nested arrays that hold pointers at the last level, but allows for reference-like usage. For instance, consider a collection of object that you would like to refer to thought an array of pointers.
array1d< ReferenceWrapper< array1d< double > > > arr;
where the array::operator[] exists. The ReferenceWrapper allows
arr[index1][index2]
note: this is really only useful for heavy array that hold their own data. For light arrays that hold pointers to their data, then this is unnecessary as a copy of the array does not trigger a deep copy.
Definition at line 49 of file ReferenceWrapper.hpp.
|
inlinenoexcept |
Constructor that sets m_ref to address of input.
| [in] | source | object to wrap |
Definition at line 65 of file ReferenceWrapper.hpp.
|
inline |
Copy constructor copies the source m_ref to the new m_ref.
| [in] | source | object to copy |
Definition at line 79 of file ReferenceWrapper.hpp.
|
inline |
Move constructor copies the source m_ref to the new m_ref.
| [in,out] | source | object to move from |
Definition at line 88 of file ReferenceWrapper.hpp.
|
inline |
Accessor for m_ref.
Definition at line 176 of file ReferenceWrapper.hpp.
|
inline |
Const accessor for m_ref.
Definition at line 185 of file ReferenceWrapper.hpp.
|
inline |
Const accessor for m_ref.
Definition at line 203 of file ReferenceWrapper.hpp.
|
inline |
Check if reference is initialized.
true if the object has been initialized with a value, false otherwise Definition at line 194 of file ReferenceWrapper.hpp.
|
inline |
A pass thru parenthesis operator which calls underlying T::operator().
| variadic | types to pass through to T::operator() |
| args | variadic params to pass through to T::operator() |
T::operator() Definition at line 251 of file ReferenceWrapper.hpp.
|
inline |
A pass thru parenthesis operator which calls underlying T::operator().
| variadic | types to pass through to T::operator() |
| args | variadic params to pass through to T::operator() |
T::operator() const Definition at line 264 of file ReferenceWrapper.hpp.
|
inline |
Copy assignment operator.
| [in] | source | object to copy |
Definition at line 99 of file ReferenceWrapper.hpp.
|
inline |
Move assignment operator.
| [in,out] | source | the rhs value to be moved |
Sets the value that m_ref refers to to the value of the rhs.
Definition at line 132 of file ReferenceWrapper.hpp.
|
inline |
Assignment operator.
| T_RHS | type of the rhs |
| U | dummy template parameter to enable SFINAE stuff |
| [in] | rhs | value to be copied |
Calls m_ref->operator=() to allow for any type on the rhs if m_ref->operator=() has a valid overload for T_RHS.
Definition at line 119 of file ReferenceWrapper.hpp.
|
inline |
Set the address that m_ref points to.
| [in] | source | reference to object that wrapper will refer to |
Definition at line 158 of file ReferenceWrapper.hpp.
|
inline |
Set the address that m_ref points to.
| [in] | source | pointer to object that wrapper will refer to |
Definition at line 167 of file ReferenceWrapper.hpp.