![]() |
|
||
The header boost/ref.hpp defines the class template boost::reference_wrapper<T> and the two functions boost::ref and boost::cref that return instances of boost::reference_wrapper<T>.
The purpose of boost::reference_wrapper<T> is to contain a reference to an object of type T. It is primarily used to "feed" references to function templates (algorithms) that take their parameter by value.
To support this usage, boost::reference_wrapper<T> provides an implicit conversion to T &. This usually allows the function templates to work on references unmodified.
boost::reference_wrapper<T> is CopyConstructible, but it is not Assignable.
The expression boost::ref(x) returns a boost::reference_wrapper<X>(x) where X is the type of x. Similarly, boost::cref(x) returns a boost::reference_wrapper<X const>(x).
namespace boost { template<class T> class reference_wrapper; template<class T> reference_wrapper<T> ref(T & t); template<class T> reference_wrapper<T const> cref(T const & t); }
template<class T> class reference_wrapper { public: explicit reference_wrapper(T & t); operator T & () const; T & get() const; };
Effects: Constructs a reference_wrapper object that stores a reference to t.
Throws: Nothing.
Returns: the stored reference.
Throws: Nothing.
Returns: the stored reference.
Throws: Nothing.
template<class T> reference_wrapper<T> ref(T & t);
Returns: reference_wrapper<T>(t).
Throws: Nothing.
template<class T> reference_wrapper<T const> cref(T const & t);
Returns: reference_wrapper<T const>(t).
Throws: Nothing.
ref and cref were originally part of the Boost.Tuple library. They were "promoted to boost:: status" because they are generally useful.
Copyright © 2001 by Peter Dimov and Multi Media
Ltd. Permission to copy, use, modify, sell and distribute this document is
granted provided this copyright notice appears in all copies. This document
is provided "as is" without express or implied warranty, and with
no claim as to its suitability for any purpose.