UnwrapReference

Metafunction to unwrap std::reference_wrapper types.

Defined in Rodin/Utility/UnwrapReference.h

template <
  class T>
struct UnwrapReference;

Specializations

SpecializationDescription
std::reference_wrapper<U>
Full specialization
template <
  class U>
struct UnwrapReference<
  std::reference_wrapper< U >>;
Specialization for std::reference_wrapper.
Template parameters
T The type to potentially unwrap.

For non-reference_wrapper types, the result is T itself. For std::reference_wrapper<U>, the result is U&.

Example usage:

using Unwrapped1 = UnwrapReference<int>::Type;                         // int
using Unwrapped2 = UnwrapReference<std::reference_wrapper<int>>::Type; // int&

Public types

using Type = T
Identity for non-reference_wrapper types.