从 https://stackoverflow.com/a/26614984/481267 可以看出以下 header 由标准保证 #include <initializer_list>
:
- [容器] 中的所有内容
-
<utility>
-
<string>
-
<algorithm>
-
<random>
-
<valarray>
-
<regex>
这些头文件中的大多数都声明了至少一个函数,该函数采用 std::initializer_list<E>
论据,所以说得通。然而,
-
<array>
,<stack>
, 和<queue>
没有这样的功能,尽管在这里统一处理所有容器可能是有意义的。 -
<utility>
没有这样的功能。 -
<iterator>
确实具有initializer_list
的功能参数(rbegin
,rend
)但未指定包含<initializer_list>
.
这些异常(exception)的原因是什么?
最佳答案
似乎没有明确的理由,只是提出了一些增加标准的提案并且这些提案被接受了。
在文档的最后 N2672 Initializer List proposed wording它只是说:
In 20.2 Utility components [utility] paragraph 1:
This subclause contains some basic function and class templates that are used throughout the rest of the library.
Header
<utility>
synopsis#include<initializer_list> namespace std {
因此,该论文的作者看到了 initializer_list
作为实用程序,因此它应该包含在 <utility>
中标题。因此它是。
论文没有对 <iterator>
提出任何更改。标题,所以没有制作。
关于c++ - 为什么将这些 C++ header 指定为包含 <initializer_list>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668236/