c++11 initializer_list 不适用于嵌入对象的文字常量值?

c++11 initializer_list doesn't work for literal constant value of embedded object?

我有一个简单的 c++11 程序:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2, {3, 4}};

g++-7 编译并给出错误:

error: too many initializers for 'A'
 }a={2,{3,4}};
            ^

我只是想知道如何使用文字常量声明 A 的对象,如何修复它?

非常感谢。

由于您的类型 A 只包含一个数据成员(int 类型),您的初始化程序中最多可以有一个元素:

struct A{
    int i;
    struct B{
        int i;
        int j;
    };
} a = {2};   // OK, a.i == 2

A 还包含类型成员 (A::B) 的事实对于创建类型 A 的对象并不重要。)