8 #ifndef LARDATA_UTILITIES_DEREFERENCE_H 9 #define LARDATA_UTILITIES_DEREFERENCE_H 1 12 #include <type_traits> 50 template <
typename T,
typename Enable =
void>
56 typename
std::enable_if<is_type<decltype(*(T()))>::value, void>::type
99 template <
typename T,
bool CanDereference>
105 template <
typename T>
131 template <
typename T,
bool CanDereference>
141 template <
typename T>
170 template <
typename T,
bool CanDereference>
180 template <
typename T>
215 template <
typename T>
250 template <
typename T>
289 template <
typename T>
303 #endif // LARDATA_UTILITIES_DEREFERENCE_H Functor returning the dereferenced value of the argument.
Namespace for general, non-LArSoft-specific utilities.
details::make_pointer_class< T, details::has_dereference_class< T >::value >::pointer_type make_pointer(T &v)
Returns a pointer to the value of argument, or the argument itself.
typename std::add_lvalue_reference< typename dereferenced_type< T, CanDereference >::type >::type reference_type
typename std::add_lvalue_reference< typename dereferenced_type< T, true >::type >::type reference_type
Functor returning the pointer to a value in the argument.
typename std::add_pointer< typename dereferenced_type< T, CanDereference >::type >::type pointer_type
typename std::add_pointer< typename dereferenced_type< T, true >::type >::type pointer_type
details::dereference_class< T, details::has_dereference_class< T >::value >::reference_type dereference(T &v)
Returns the value pointed by the argument, or the argument itself.
Class defining the dereferenced type of the specified type.
LArSoft-specific namespace.
Class holding the type dereferenced from an object of type T.
Class compiling only if type T exists (then, it's std::true_type)
Class defining whether the specified type can be dereferenced.