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()的说明

09-06 13:35