Chr*_*eck 1 c++ c++11 reference-wrapper c++17 c++20
从C++ 11开始,它std::reference_wrapper是一个小的"垫片"模板,它是一种类型,可以从引用类型构造并转换为引用类型.它可以在通用容器中使用,否则可能不支持引用.
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
std :: reference_wrapper是一个类模板,它在可复制的可分配对象中包装引用.它经常被用作在标准容器(如std :: vector)中存储引用的机制,它通常不能保存引用.
此标准库功能在C++ 17中已弃用,并在当前的C++ 20草案中删除.为什么?
std::reference_wrapper以某种方式使用或有缺陷是不安全的吗?
在http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r3.html#2.0中
,似乎这部分被认为是"D.8旧适应性功能绑定"的一部分,标准描述中的文本在std::reference_wrapper"D.9.2 Typedef to Support Function Binders [depr.func.adaptor.typedefs]"部分中划掉
看来我们正在删除它,因为它在旧的函数绑定器API中扮演了一个角色,但它实际上在容器中有其他用途,如参考页面所述.是否有一些我遗漏的东西取代了那个用例,或者我错过了这种情况的其他东西?
如果要删除这个有用的功能,我们是否应该在需要时实现它,或者是否有某些原因导致整个模式不安全?