DASH  0.3.0
dash::UniversalMember< ValueType > Class Template Reference

Utility class template to capture values from both moved temporaries (rvalues) and named references to avoid temporary copies. More...

#include <UniversalMember.h>

Public Member Functions

constexpr UniversalMember (ValueType &&value)
 
constexpr UniversalMember (const ValueType &value)
 
constexpr UniversalMember (const ValueType *value)
 
 operator ValueType & ()
 
constexpr operator const ValueType & () const
 
self_toperator= (ValueType &&value)
 
constexpr const std::shared_ptr< ValueType > & shared () const
 

Detailed Description

template<class ValueType>
class dash::UniversalMember< ValueType >

Utility class template to capture values from both moved temporaries (rvalues) and named references to avoid temporary copies.

Usage example
// Class using dash::UniversalMember
template <class T>
class MyClass {
public:
constexpr explicit MyClass(T && value)
: _value(std::forward<T>(value))
{ }
constexpr explicit MyClass(const T & value)
: _value(value)
{ }
T & value() { return _value; }
const T & value() const { return _value; }
};
// Value type definition and passing values to a class using
// dash::UniversalMember
template <
class T,
class ValueT = typename std::remove_const<
typename std::remove_reference<T>::type
>::type
>
MyClass<ValueT>
make_my_class(T && val) {
return MyClass<ValueT>(std::forward<T>(val));
}

Definition at line 50 of file UniversalMember.h.


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