隐式使用 initializer_list
Implicit use of initializer_list
§[dcl.init.list]
8.5.4/2:
The template std::initializer_list
is not predefined; if the header <initializer_list>
is not included prior to a use of std::initializer_list
— even an implicit use in which the type is not named (7.1.6.4) — the program is ill-formed.
这是否意味着这个程序格式错误?
#include <vector>
int main() {
// uses vector::vector(initializer_list<T>, const Allocator&) constructor
std::vector<int> v = {1, 2, 3};
}
你的程序不是ill-formed因为<vector>
保证包含<initializer_list>
(所有标准库容器也是如此)
§23.3.1 [sequences.general]
Header <vector>
剧情简介
#include <initializer_list>
...
搜索 #include <initializer_list>
的标准显示 header 与以下 headers
一起包含
<utility>
<string>
<array>
<deque>
<forward_list>
<list>
<vector>
<map>
<set>
<unordered_map>
<unordered_set>
<queue>
<stack>
<algorithm>
<random>
<valarray>
<regex>
§[dcl.init.list] 8.5.4/2:
The template
std::initializer_list
is not predefined; if the header<initializer_list>
is not included prior to a use ofstd::initializer_list
— even an implicit use in which the type is not named (7.1.6.4) — the program is ill-formed.
这是否意味着这个程序格式错误?
#include <vector>
int main() {
// uses vector::vector(initializer_list<T>, const Allocator&) constructor
std::vector<int> v = {1, 2, 3};
}
你的程序不是ill-formed因为<vector>
保证包含<initializer_list>
(所有标准库容器也是如此)
§23.3.1 [sequences.general]
Header <vector>
剧情简介
#include <initializer_list>
...
搜索 #include <initializer_list>
的标准显示 header 与以下 headers
<utility>
<string>
<array>
<deque>
<forward_list>
<list>
<vector>
<map>
<set>
<unordered_map>
<unordered_set>
<queue>
<stack>
<algorithm>
<random>
<valarray>
<regex>