| Home | Libraries | People | FAQ | More

## 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.