C++11 initializer_list не работает для буквального значения константы встроенного объекта?

У меня есть простая программа на 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 с использованием литеральных констант, как это исправить?

Большое спасибо.

1 ответ

Решение

Так как ваш тип A содержит только один элемент данных (типа int), вы можете иметь не более одного элемента в вашем инициализаторе:

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

(Дело в том, что A также содержит член типа (A::B) не имеет значения для создания объектов типа A.)

Другие вопросы по тегам