C++ 17 添加了 [[nodiscard]]
。
C++ 20 在[[nodiscard]]
方法上添加了empty
的用法,例如 vector::empty()
-可能是为了避免用户与clear方法混淆(即不小心调用empty()以清除 vector )。
为什么C++ 20没有利用这个机会将[[nodiscard]]
添加到unique_ptr::release
?
是否存在一种有效的合理情况,在这种情况下将调用 unique_ptr::release
而不获取返回值?
以避免用户混淆的相同方式(如果这是向[[nodiscard]]
方法中添加empty
的原因)-release
这个名称始终非常令人困惑,听起来像是,嗯……这里将要发布一些内容。
在某种程度上,添加[[nodiscard]]
可以解决此名称问题。
最佳答案
在将[[nodiscard]]
添加到许多功能的论文中已解决了这一问题。在P0600R1中,这是关于将[[nodiscard]]
添加到unique_ptr::release()
的说明