c++ - 为什么将这些 C++ header 指定为包含 <initializer_list>?

标签 c++ initializer-list

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 的功能参数( rbeginrend )但未指定包含 <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/

相关文章:

c++ - <initializer_list> 引用函数

c++ - 使用带有 new 运算符的列表初始化

c++ - 使用 initializer_list 上的数据

c++ - 在 C++ 中将 char 或 string 转换为 bitset

java - 是否有自动删除发布版本调试方法的方法?

c++ - 根据字符串变量设置的规则进行排序

c++ - gdb:如何调用 operator char const*()?

c++ - 用 "var{args}"初始化是 C++0x 的新特性,还是仅仅是语法糖?

c++ - 如何使默认析构函数成为非内联的?

如果结构体包含互斥锁,则 C++ 将初始值设定项列表推送到标准 vector 时出现问题