std::reference_wrapper<T>::reference_wrapper
来自cppreference.com
< cpp | utility | functional | reference
wrapper
工具库
函数对象
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
旧绑定器与适配器 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
std::reference_wrapper
成员函数 | ||||
reference_wrapper::reference_wrapper
|
||||
推导指引(C++17) |
(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 |
异常
示例
本节未完成 原因:暂无示例 |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2993 | C++11 | 被删除的 reference_wrapper(T&&)
构造函数在某些情况下干涉重载决议
|
替换成构造函数模板 |