首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >initializer_list在VC10中不起作用

initializer_list在VC10中不起作用
EN

Stack Overflow用户
提问于 2010-05-08 06:21:22
回答 1查看 10K关注 0票数 16

我用VC++ 2010写了这个程序:

代码语言:javascript
复制
class class1
{
public:
 class1 (initializer_list<int> a){};
 int foo;
 float Bar;
};
void main()
{
 class1 c = {2,3};
 getchar();
}

但是当我编译项目时,我得到了这个错误:

错误1错误C2552:'c‘:无法使用初始化器列表c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp 27初始化非聚合

2 IntelliSense:"class1“c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp 27类型的对象不允许使用'{...}‘进行初始化

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-08 06:40:17

它不应该被支持at all

...VC10中没有实现初始化器列表的C++0x核心语言功能和相关的标准库更改。

该错误消息指的是聚合初始化的C++0x之前的功能,该功能允许通过使用大括号初始化某些用户定义的类型:

代码语言:javascript
复制
struct pair { int first; char second; };
pair p = { 0, 'c' };

聚合在§8.5.1中定义

聚合是一个数组或类(第9条),没有用户声明的构造函数(12.1),没有私有或受保护的非静态数据成员(第11条),没有基类(第10条),没有虚函数(10.3)。当聚合被初始化时,初始化器可以包含初始化器子句,该初始化器子句由大括号封闭的、以逗号分隔的聚合体成员的初始化器子句列表组成,该列表以递增的下标或成员顺序写入。如果聚合包含子聚合,则此规则以递归方式应用于子聚合的成员。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2792028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档