Агрегатная инициализация, clang хочет, чтобы я сломал свой код?

Почему clang предлагает мне добавить дополнительные фигурные скобки при инициализации моего двумерного стандартного массива? Что приведет к ошибке. Или я просто не понимаю, чего он от меня хочет?

Я знаю, что могу добавить внешние фигурные скобки, чтобы было понятно, что я инициализирую первый член класса, но это не избавит от предупреждений. Я не думаю, что могу добавить какие-либо другие фигурные скобки.

Скомпилировано на Godbolt с clang9.0.0 -O0 -std=c++17 -Wall -Wno-unused-value

Ссылка

#include <array>

int main() {
    std::array<std::array<float, 3>, 3> {
        1,2,3,
        1,2,3,
        1,2,3
    };

    std::array<std::array<float, 3>, 3> {{
        1,2,3,
        1,2,3,
        1,2,3
    }};
}

Я был бы в порядке, если бы в предупреждении мне было сказано сделать второй вариант в моем примере, но, похоже, он хочет, чтобы я обернул элемент внутреннего массива, чего вы не можете сделать.

Для получения дополнительной информации об инициализации агрегации: CppRefference


person Benno Dörr    schedule 24.10.2019    source источник


Ответы (1)


Две версии для создания двух равных массивов:

#include <array>

int main() {
    std::array<std::array<float, 3>, 3> a {{
        {1,2,3},
        {1,2,3},
        {1,2,3}
    }};

    std::array<std::array<float, 3>, 3> b = {{
        {1,2,3},
        {1,2,3},
        {1,2,3}
    }};
}
person Ted Lyngmo    schedule 24.10.2019
comment
Я что-то упустил или оба списка одинаковы? - person NathanOliver; 24.10.2019
comment
@NathanOliver Во втором =, в остальном точно так же. :-) - person Ted Lyngmo; 24.10.2019
comment
Ах хорошо. Я думал, ты имеешь в виду две версии списка. - person NathanOliver; 24.10.2019
comment
@NathanOliver Ага, нет, добавил примечание. Не уверен, что сделал это яснее. :-/ - person Ted Lyngmo; 24.10.2019
comment
Спасибо за это, я проверил только внутренние 3 элемента в фигурных скобках или дополнительные внешние фигурные скобки. Я был уверен, что тестировал оба вместе, но, похоже, я этого не сделал. - person Benno Dörr; 24.10.2019