C++ 为什么std::forward_list::empty有[[nodiscard]],而std::forward_list::max_size没有';T

C++ 为什么std::forward_list::empty有[[nodiscard]],而std::forward_list::max_size没有';T,c++,c++17,standards,api-design,forward-list,C++,C++17,Standards,Api Design,Forward List,在ofstd::forward_列表中,有两个成员函数: [[nodiscard]]bool empty()const noexcept size\u type max\u size()常量noexcept 令我惊讶的是: 为什么empty有[[nodiscard]]而max\u size没有?原因有两部分: 无法将表示为.maximum\u size()的查询“最大大小是多少?”与其他任何内容混淆,而您可以将表示为.empty()的查询“它是空的吗?”与名为.clear()的命令“清空它!”混

在of
std::forward_列表中,有两个成员函数:

  • [[nodiscard]]bool empty()const noexcept
  • size\u type max\u size()常量noexcept
  • 令我惊讶的是:


    为什么
    empty
    [[nodiscard]]
    max\u size
    没有?

    原因有两部分:

  • 无法将表示为
    .maximum\u size()
    的查询“最大大小是多少?”与其他任何内容混淆,而您可以将表示为
    .empty()
    的查询“它是空的吗?”与名为
    .clear()
    的命令“清空它!”混淆

  • [[nodiscard]]
    是一项新技术,尚未应用于标准库中适用的任何地方(到目前为止)。C++20增加了一些地方,但仍然不够全面


  • 原因分为两部分:

  • 无法将表示为
    .maximum\u size()
    的查询“最大大小是多少?”与其他任何内容混淆,而您可以将表示为
    .empty()
    的查询“它是空的吗?”与名为
    .clear()
    的命令“清空它!”混淆

  • [[nodiscard]]
    是一项新技术,尚未应用于标准库中适用的任何地方(到目前为止)。C++20增加了一些地方,但仍然不够全面


  • 我猜委员会还没来得及着手。看来所有的方法都是一次成功的。我想委员会还没来得及着手。似乎所有的方法都一次得到了它。好吧,我可以想象有人可以阅读
    max\u size()
    来表示调整到支持的最大大小。我在想初学者有时是如何编写
    char my_input[99999]或类似于“足够大,以防万一”的东西。有人可能会认为为他们的应用程序分配非常大的缓冲区是个好主意,并将
    max_size
    视为专为他们设计的功能。编辑:当然,这似乎比把
    empty()
    弄错更为罕见。@FrançoisAndrieux很好地证明了绝对新手可能真的令人难以置信。我可以想象,有人可以阅读
    max_size()
    ,意思是将大小调整到支持的最大大小。我在想初学者有时是如何编写
    char my_input[99999]或类似于“足够大,以防万一”的东西。有人可能会认为为他们的应用程序分配非常大的缓冲区是个好主意,并将
    max_size
    视为专为他们设计的功能。编辑:当然,这似乎比把
    empty()
    搞错更为罕见。@FrançoisAndrieux很好地证明了绝对的新手可以真正令人难以置信。