# std::reference_wrapper<T>::reference_wrapper

< cpp‎ | utility‎ | functional‎ | reference wrapper

| (1) |
template< class U > reference_wrapper( U&& x ) noexcept(/*see below*/) ; |  | (C++20 前)
template< class U > constexpr reference_wrapper( U&& x ) noexcept(/*see below*/) ; |  | (C++20 起)
| (2) |
reference_wrapper( const reference_wrapper& other ) noexcept; |  | (C++20 前)
constexpr reference_wrapper( const reference_wrapper& other ) noexcept; |  | (C++20 起)

构造新的引用包装。

1) 如同用 T& t = std::forward<U>(x); 转换 `x` 为 `T&` ，然后存储到 `t` 的引用。此重载仅若 typename std::decay<U>::type 与 `reference_wrapper` 不是同一类型且表达式 FUN(std::declval<U>()) 为良式才参与重载决议，其中 `FUN` 指名虚构函数集

    void FUN(T&) noexcept;
    void FUN(T&&) = delete;

2) 复制构造函数。存储到 `other.get()` 的引用。

### 参数

x | - | 要包装的对象
other | - | 另一 reference_wrapper

### 异常

1)
`noexcept` 说明：
noexcept(noexcept(FUN(std::declval<U>())))
，其中 `FUN` 是以上描述中的虚构函数集。

### 示例

| 本节未完成 原因：暂无示例

### 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
LWG 2993 | C++11 | 被删除的 `reference_wrapper(T&&)` 构造函数在某些情况下干涉重载决议 | 替换成构造函数模板