首页 > 解决方案 > 为什么 std::reference_wrapper 显式定义复制赋值运算符?

问题描述

std::reference_wrapper 显式声明了复制赋值运算符。为什么?这应该可以防止隐式定义移动构造/赋值,所以我的假设是他们不希望你移动 std::reference_wrapper,但我不确定为什么这很重要。

如果您查看“可能的实现”,他们只是默认操作员: https ://en.cppreference.com/w/cpp/utility/functional/reference_wrapper/operator%3D

只是寻找一些关于为什么委员会认为有必要这样做的历史。

标签: c++

解决方案


这应该防止隐式定义移动构造/分配

std::reference_wrapper是一个非拥有引用(实际上是一个指针),移动操作与复制没有什么不同。不要将其与std::shared_ptr.


推荐阅读