为什么 std::forward_list::empty 有 [[nodiscard]] 而 std::forward_list::max_size 没有?
Why does std::forward_list::empty has [[nodiscard]] while std::forward_list::max_size doesn't?
在std::forward_list
的documentation中,有两个成员函数:
[[nodiscard]] bool empty() const noexcept;
size_type max_size() const noexcept;
让我惊讶的是:
为什么 empty
有 [[nodiscard]]
而 max_size
没有?
原因分为两部分:
无法将表示为 .maximum_size()
的查询 "what is the maximum size?" 与其他任何内容混淆,而您可以将表示为 [=11 的查询 "is it empty?" 混淆=] 使用命令 "empty it!",它得到名称 .clear()
.
[[nodiscard]]
是新的,并没有在标准库中适用的所有地方应用(迄今为止)。 C++20 增加了一些地方,但仍然不够全面。
在std::forward_list
的documentation中,有两个成员函数:
[[nodiscard]] bool empty() const noexcept;
size_type max_size() const noexcept;
让我惊讶的是:
为什么 empty
有 [[nodiscard]]
而 max_size
没有?
原因分为两部分:
无法将表示为
.maximum_size()
的查询 "what is the maximum size?" 与其他任何内容混淆,而您可以将表示为 [=11 的查询 "is it empty?" 混淆=] 使用命令 "empty it!",它得到名称.clear()
.[[nodiscard]]
是新的,并没有在标准库中适用的所有地方应用(迄今为止)。 C++20 增加了一些地方,但仍然不够全面。