C ++ 11: Исправить инициализацию std :: array?

Если я инициализирую std :: array следующим образом, компилятор дает мне предупреждение о отсутствующих фигурных скобках

std::array a = {1, 2, 3, 4}; 

Это устраняет проблему:

 std::array a = {{1, 2, 3, 4}}; 

Это предупреждение:

 missing braces around initializer for 'std::array::value_type [4] {aka int [4]}' [-Wmissing-braces] 

Это просто ошибка в моей версии gcc, или это сделано намеренно? Если да, то почему?

Это голая реализация std::array :

 template struct array { T __array_impl[N]; }; 

Это агрегатная структура, единственным членом которой является традиционный массив, так что внутренний {} используется для инициализации внутреннего массива.

В некоторых случаях допускается скользящее разрешение в случае агрегатной инициализации (но обычно не рекомендуется), и поэтому в этом случае можно использовать только одну скобу. См. Здесь: вектор C ++ массивов

Согласно cppreference . Двойные скобки требуются только в том случае, если = опущено.

 // construction uses aggregate initialization std::array a1{ {1,2,3} }; // double-braces required std::array a2 = {1, 2, 3}; // except after = std::array a3 = { {std::string("a"), "b"} }; 

Требуется двойная привязка в C ++ 11, но не с C ++ 14:

 // construction uses aggregate initialization std::array a1{ {1, 2, 3} }; // double-braces required in C++11 (not in C++14) std::array a2 = {1, 2, 3}; // never required after = 

std :: ссылка на массив

  • Тип узла выражения LINQ «ArrayIndex» не поддерживается в LINQ to Entities
  • Почему Collections.sort использует Mergesort, но Arrays.sort нет?
  • Как создать точную копию массива?
  • Как получить уникальные значения из массива
  • Java: BufferedImage для байтового массива и обратно
  • Как создать правильный JSONArray в Java с помощью JSONObject
  • Какому компилятору я должен доверять?
  • Как удалить элемент из массива в C #
  • Как узнать, содержит ли массив строку
  • Получить объект JavaScript из массива объектов по значению свойства
  • Как преобразовать stream Java 8 в массив?
  • Давайте будем гением компьютера.