C++ 为什么std::forward_list::empty有[[nodiscard]],而std::forward_list::max_size没有';T
在ofC++ 为什么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()的命令“清空它!”混
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很好地证明了绝对的新手可以真正令人难以置信。