为什么 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_listdocumentation中,有两个成员函数:

  1. [[nodiscard]] bool empty() const noexcept;
  2. size_type max_size() const noexcept;

让我惊讶的是:

为什么 empty[[nodiscard]]max_size 没有?

原因分为两部分:

  1. 无法将表示为 .maximum_size() 的查询 "what is the maximum size?" 与其他任何内容混淆,而您可以将表示为 [=11 的查询 "is it empty?" 混淆=] 使用命令 "empty it!",它得到名称 .clear().

  2. [[nodiscard]] 是新的,并没有在标准库中适用的所有地方应用(迄今为止)。 C++20 增加了一些地方,但仍然不够全面。