隐式使用initializer_list

时间:2015-06-22 02:50:45

标签: c++ c++11 initializer-list

§[dcl.init.list]  8.5.4 / 2:

  

模板std::initializer_list未预定义;如果在使用<initializer_list>之前未包含标题std::initializer_list - 即使是未命名类型的隐式用法(7.1.6.4) - 程序也是格式错误。

这是否意味着该计划格式不正确?

#include <vector>
int main() {
    // uses vector::vector(initializer_list<T>, const Allocator&) constructor
    std::vector<int> v = {1, 2, 3};
}

1 个答案:

答案 0 :(得分:5)

您的程序不是格式错误,因为<vector>保证包含<initializer_list>(所有标准库容器都是如此)

§23.3.1[sequences.general]

标题<vector>简介

#include <initializer_list>
...

搜索#include <initializer_list>的标准会显示标题包含以下标题

  • <utility>
  • <string>
  • <array>
  • <deque>
  • <forward_list>
  • <list>
  • <vector>
  • <map>
  • <set>
  • <unordered_map>
  • <unordered_set>
  • <queue>
  • <stack>
  • <algorithm>
  • <random>
  • <valarray>
  • <regex>
相关问题