Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of boost. Click here for the latest Boost documentation.
PrevUpHomeNext

Class template reference_wrapper

boost::reference_wrapper — Contains a reference to an object of type T.

Synopsis

// In header: <boost/ref.hpp>

template<typename T> 
class reference_wrapper {
public:
  // types
  typedef T type;

  // construct/copy/destruct
  explicit reference_wrapper(T&);

  // access
  operator T&() const;
  T& get() const;
  T* get_pointer() const;
};

// constructors
reference_wrapper<T> ref(T&);
reference_wrapper<T const> cref(T const&);

// access
unwrap_reference<T>::type& unwrap_ref(T&);

Description

reference_wrapper is primarily used to "feed" references to function templates (algorithms) that take their parameter by value. It provides an implicit conversion to T&, which usually allows the function templates to work on references unmodified.

reference_wrapper public construct/copy/destruct

  1. explicit reference_wrapper(T& t);

    Effects:

    Constructs a reference_wrapper object that stores a reference to t.

    Throws:

    Does not throw.

reference_wrapper access

  1. operator T&() const;

    Returns:

    The stored reference.

    Throws:

    Does not throw.
  2. T& get() const;

    Returns:

    The stored reference.

    Throws:

    Does not throw.
  3. T* get_pointer() const;

    Returns:

    A pointer to the object referenced by the stored reference.

    Throws:

    Does not throw.

reference_wrapper constructors

  1. reference_wrapper<T> ref(T& t);

    Returns:

    reference_wrapper<T>(t)

    Throws:

    Does not throw.
  2. reference_wrapper<T const> cref(T const& t);

    Returns:

    reference_wrapper<T const>(t)

    Throws:

    Does not throw.

reference_wrapper access

  1. unwrap_reference<T>::type& unwrap_ref(T& t);

    Returns:

    unwrap_reference<T>::type&(t)

    Throws:

    Does not throw.

PrevUpHomeNext