REF library in Boost
Reference_wrapper, is_reference_wrapper, unwrap_reference, ref, CREF is the five main objects involved in this library. Where Reference_Wrapper contains references to an object of a type T, mainly for incorporating a function template (algorithm) that transmits the value. Is_reference_wrapper is a determination of type T, by the value of Value. Unwrap_reference If the type T can Reference_Wrapper, the Type reflects that T :: Type, otherwise it is reflected to T.
Ref is a REFERENCE_WRAPPER object to generate a T type, and CREF generates a Const & a Reference_Wrapper object.