| 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/core/ref.hpp>

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

      // construct/copy/destruct
      explicit reference_wrapper(T &) noexcept;
      reference_wrapper(T &&) = delete;
      template<typename Y,
               typename  = typename enable_if_c<boost::detail::ref_convertible<Y, T>::value>::type>
        reference_wrapper(reference_wrapper< Y >) noexcept;

      // public member functions
      operator T&() const noexcept;
      T & get() const noexcept;
      T * get_pointer() const noexcept;
    };

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

1. typedef T type;

   Type `T`.

### `reference_wrapper` public construct/copy/destruct

1.     explicit reference_wrapper(T & t) noexcept;

   Constructs a ``reference_wrapper`` object that stores a reference to `t`.

   Does not throw.

2.     reference_wrapper(T && t) = delete;

   Construction from a temporary object is disabled.

3.     template<typename Y,
                typename  = typename enable_if_c<boost::detail::ref_convertible<Y, T>::value>::type>
         reference_wrapper(reference_wrapper< Y > r) noexcept;

   Constructs a ``reference_wrapper`` object that stores the reference stored in the compatible ``reference_wrapper`` `r`.

   Only enabled when `Y*` is convertible to `T*`.

   Does not throw.

### `reference_wrapper` public member functions

1.     operator T&() const noexcept;

   Does not throw.

   Returns: | The stored reference.

2.     T & get() const noexcept;

   Does not throw.

   Returns: | The stored reference.

3.     T * get_pointer() const noexcept;

   Does not throw.

   Returns: | A pointer to the object referenced by the stored reference.