Add utilities for std::reference_wrapper
This adds the following helpers for handling std::reference_wrapper
:
- A predicate
IsReferenceWrapper_v<R>
for detecting ifR
is astd::reference_wrapper<T>
. - A helper function
resolveRef
for resolving references wrapped instd::reference_wrapper
. For typeT
providing a methodT::foo()
this allows to transparently useresolveRef(t).foo()
ift
is either a plainT
or astd::reference_wrapper<T>
. - A type alias
ResolveRef_t<T>
to determine the resolved type forT
.