---
name: "std::reference_wrapper"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::reference_wrapper/3cxx"
---

# std::reference\_wrapper(3cxx)

Primary class template for reference\_wrapper.

## NAME

std::reference\_wrapper\< \_Tp \> - Primary class template for reference\_wrapper.

## SYNOPSIS

`#include <functional>`

### Public Types

**typedef** \_Tp **type**\

### Public Member Functions

template\<**typename** \_Up , **typename**  = \_\_not\_same\<\_Up\>, **typename**  = decltype(reference\_wrapper::\_S\_fun(std::declval\<\_Up\>()))\> constexpr **reference\_wrapper** (\_Up &&**\_\_uref**) noexcept(noexcept(reference\_wrapper::\_S\_fun(**std::declval**\< \_Up \>())))\
 **reference\_wrapper** (const **reference\_wrapper** &)=**default**\
 constexpr \_Tp & **get** () const noexcept\
 constexpr **operator \_Tp &** () const noexcept\
 template\<typename... \_Args\> constexpr \_\_invoke\_result\< \_Tp &, \_Args... \>::type **operator()** (**\_Args** &&... **\_\_args**) const noexcept(**\_\_is\_nothrow\_invocable**\< \_Tp &, \_Args... \>::value)\
 **reference\_wrapper** & **operator=** (const **reference\_wrapper** &)=**default**\

### Related Symbols

(Note that these are not member symbols.)

template\<**typename** \_Tp \> constexpr **reference\_wrapper**\< \_Tp \> **ref** (\_Tp &\_\_t) noexcept\
 template\<**typename** \_Tp \> constexpr **reference\_wrapper**\< const \_Tp \> **cref** (const \_Tp &\_\_t) noexcept\
 Denotes a const reference should be taken to a variable.  template\<**typename** \_Tp \> constexpr **reference\_wrapper**\< \_Tp \> **ref** (**reference\_wrapper**\< \_Tp \> \_\_t) noexcept\
 std::ref overload to prevent wrapping a reference\_wrapper  template\<**typename** \_Tp \> constexpr **reference\_wrapper**\< const \_Tp \> **cref** (**reference\_wrapper**\< \_Tp \> \_\_t) noexcept\
 std::cref overload to prevent wrapping a reference\_wrapper

## Detailed Description

### template\<typename \_Tp\>

class std::reference\_wrapper\< \_Tp \>"Primary class template for reference\_wrapper.

## Friends And Related Symbol Documentation

### template\<typename \_Tp \> constexpr reference\_wrapper\< const \_Tp \> cref (const \_Tp & \_\_t)` [related]`

Denotes a const reference should be taken to a variable.

### template\<typename \_Tp \> constexpr reference\_wrapper\< const \_Tp \> cref (reference\_wrapper\< \_Tp \> \_\_t)` [related]`

std::cref overload to prevent wrapping a reference\_wrapper

### template\<typename \_Tp \> constexpr reference\_wrapper\< \_Tp \> ref (\_Tp & \_\_t)` [related]`

Denotes a reference should be taken to a variable.

### template\<typename \_Tp \> constexpr reference\_wrapper\< \_Tp \> ref (reference\_wrapper\< \_Tp \> \_\_t)` [related]`

std::ref overload to prevent wrapping a reference\_wrapper

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
