支持聚合内部标量的初始化

时间:2013-09-20 06:16:42

标签: c++ c++11 list-initialization aggregate-initialization

知道这是有效的c ++ 11

int i {1};

这个有效吗?

int j[] {{1}};

GCC发出错误,发出警告。

1 个答案:

答案 0 :(得分:2)

这是无效的,因为jint(标量)的数组。您可以 仅对聚合本身的成员使用嵌入式大括号。

#include <initializer_list>

struct T
{
    int x, y;    
};

int main() 
{
    int j[] {{1}}; // error, int is scalar
    T t[] {{1,2}}; // OK, T is aggregate
}