C++ 隐式使用初始值设定项\u list
§[dcl.初始列表] 8.5.4/2: 模板C++ 隐式使用初始值设定项\u list,c++,c++11,initializer-list,C++,C++11,Initializer List,§[dcl.初始列表] 8.5.4/2: 模板std::initializer\u list未预定义;如果在使用std::initializer_list之前未包含标题——即使是未命名类型的隐式使用(7.1.6.4)——程序格式错误 这是否意味着该计划的形式不正确 #包括 int main(){ //使用vector::vector(初始值设定项\列表、常量分配器&)构造函数 向量v={1,2,3}; } 您的程序不是格式错误的,因为保证包含(对于所有标准库容器也是如此) §23.3.1[顺序.
std::initializer\u list
未预定义;如果在使用std::initializer_list
之前未包含标题
——即使是未命名类型的隐式使用(7.1.6.4)——程序格式错误
这是否意味着该计划的形式不正确
#包括
int main(){
//使用vector::vector(初始值设定项\列表、常量分配器&)构造函数
向量v={1,2,3};
}
您的程序不是格式错误的,因为
保证包含
(对于所有标准库容器也是如此)
§23.3.1[顺序.概述]
标题
概要
#include <initializer_list>
...
#包括
...
在标准中搜索
#include
将显示包含的标题以及以下标题
std::vector
构造函数使用初始值设定项列表
,所以必须包含在
中。但是,除非在某个地方说明了这种依赖关系,否则形式上的依赖可能是不正确的。原因是标准库可以发挥任何作用,包括依赖于编译器的非标准行为,因此不能认为标准库必须以与自己的代码相同的方式实现。cf@T.C.哈!结果我甚至在这个答案上投了你一票:)。我将把它留给OP来决定它是否是一个复制品,因为这一个是专门关于