为什么 STL Container 函数 empty() 标记为 [[nodiscard]]?

Why is the STL Container function empty() marked as [[nodiscard]]?

好像是empty() is the only function that has been marked as nodiscard.

其他类似功能如size()还没有。

为什么会这样?

首先,希望以后能标注更多的功能[[nodiscard]]

但是,empty 传统上是新用户的困惑点。他们认为这是一个动词,它会删除容器中的所有元素(这里的正确调用是clear)。

因此,将 empty 标记为 [[nodiscard]] 会捕获所有人们称它为期望它对容器做某事的地方(而不是仅仅返回 size() == 0