C++17 added [[nodiscard]] https://en.cppreference.com/w/cpp/language/attributes/nodiscard.
C++20添加了使用[[nodiscard]]
on empty
方法,例如vector::empty() https://en.cppreference.com/w/cpp/container/vector/empty - 或许,以避免用户与clear方法混淆(即调用empty()不小心clear向量)。
为什么C++20没有利用这个机会添加[[nodiscard]]
to unique_ptr::release
?
是否存在一种有效合理的场景,在这种情况下,人们会调用unique_ptr::release https://en.cppreference.com/w/cpp/memory/unique_ptr/release不取返回值?
以同样的方式避免用户混淆(如果这是添加的原因)[[nodiscard]]
to the empty
方法)-名称release
总是很令人困惑,听起来好像,嗯……有些东西要在这里发布。
Adding [[nodiscard]]
可以在某种程度上解决这个名称问题。
这在添加的论文中得到了解决[[nodiscard]]
到许多功能。从P0600R1 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf这是关于添加的注释[[nodiscard]]
to unique_ptr::release()
Titus:在 Google,3.5% 的调用会失败,但分析显示
它是正确的(但所有权语义很奇怪)。看
反射电子邮件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)