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

标签 c++ c++20 nodiscard

好像empty()是唯一被标记为 nodiscard 的函数.

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

这是为什么?

最佳答案

首先,我希望将来会有更多功能被标记为[[nodiscard]]

但是,empty 通常会让新用户感到困惑。他们认为这是一个动词,它将删除容器中的所有元素(此处正确的调用是clear)。

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

关于c++ - 为什么 STL Container 函数 empty() 标记为 [[nodiscard]]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021258/

相关文章:

c++ - 使用宏替换具有细微差异的重复代码块

c++ - 在哪个访问控制上下文中评估概念?

c++ - 拥有 [[nodiscard]] 类型的理由是什么?

c++ - 如果我们已经有了 RVO, move 语义会提供什么优化?

c++ - 有效地初始化 const std::vector 类成员

c++ - 类型特征 `is_noexcept` 、 `add_noexcept` 和 `remove_noexcept` ?

c++ - 为什么协程不允许占位符返回类型?

c++ - 在特殊情况下是否可以忽略 [[nodiscard]]?

c++ - 为什么 clang-tidy 建议在任何地方添加 [[nodiscard]] ?

c++ - 使用迭代器向后迭代