为什么 `std::reference_wrapper` 在 c++17 中弃用并在 c++20 中删除?
Why is `std::reference_wrapper` deprecated in c++17 and removed in c++20?
自 C++11 起,std::reference_wrapper
是一个小型 "shim" 模板,它是一个 class 类型,可从引用类型构造并转换为引用类型。它可以在可能不支持引用的通用容器中使用。
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
std::reference_wrapper is a class template that wraps a reference in a copyable, assignable object. It is frequently used as a mechanism to store references inside standard containers (like std::vector) which cannot normally hold references.
此标准库功能已在 C++17 中弃用,并在 C++20 的当前草案中删除。为什么?
std::reference_wrapper
使用不安全或有缺陷吗?
在http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r3.html#2.0
看起来这部分被认为是 "D.8 Old adaptable function bindings" 的一部分,标准中描述 std::reference_wrapper
的文本在 "D.9.2 Typedefs to Support Function Binders [depr.func.adaptor.typedefs]"
部分被划掉了
我们删除它似乎是因为它在旧函数绑定器中发挥了作用 API,但它实际上在容器中有其他用途,如参考页所述。是否有我遗漏的东西来代替那个用例,或者我错过了关于这种情况的其他东西?
如果删除了这个有用的功能,我们是否应该在需要时实施它,或者是否有某种原因导致整个模式不安全?
This standard library feature was deprecated in C++17 and is removed in the current draft of C++20.
它没有被弃用,也没有被删除。事实上,你可以在最新的草稿[refwrap]下找到它。
啊,你误解了被删除的措辞。 "old adaptable function bindings" 在 [refwrap](和其他)下,但它们已被弃用,因此它们被移至附录 D。这意味着 std::reference_wrapper
的规范被拆分了!
您可以从链接论文的 D9.2p2 中看到这一点。它说:
The following member names are defined in addition to names specified in Clause 23.14:
那些活页夹是 额外的 成员。它们的删除对 reference_wrapper
.
规范的其他部分没有影响
自 C++11 起,std::reference_wrapper
是一个小型 "shim" 模板,它是一个 class 类型,可从引用类型构造并转换为引用类型。它可以在可能不支持引用的通用容器中使用。
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
std::reference_wrapper is a class template that wraps a reference in a copyable, assignable object. It is frequently used as a mechanism to store references inside standard containers (like std::vector) which cannot normally hold references.
此标准库功能已在 C++17 中弃用,并在 C++20 的当前草案中删除。为什么?
std::reference_wrapper
使用不安全或有缺陷吗?
在http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r3.html#2.0
看起来这部分被认为是 "D.8 Old adaptable function bindings" 的一部分,标准中描述 std::reference_wrapper
的文本在 "D.9.2 Typedefs to Support Function Binders [depr.func.adaptor.typedefs]"
我们删除它似乎是因为它在旧函数绑定器中发挥了作用 API,但它实际上在容器中有其他用途,如参考页所述。是否有我遗漏的东西来代替那个用例,或者我错过了关于这种情况的其他东西?
如果删除了这个有用的功能,我们是否应该在需要时实施它,或者是否有某种原因导致整个模式不安全?
This standard library feature was deprecated in C++17 and is removed in the current draft of C++20.
它没有被弃用,也没有被删除。事实上,你可以在最新的草稿[refwrap]下找到它。
啊,你误解了被删除的措辞。 "old adaptable function bindings" 在 [refwrap](和其他)下,但它们已被弃用,因此它们被移至附录 D。这意味着 std::reference_wrapper
的规范被拆分了!
您可以从链接论文的 D9.2p2 中看到这一点。它说:
The following member names are defined in addition to names specified in Clause 23.14:
那些活页夹是 额外的 成员。它们的删除对 reference_wrapper
.