A std::array<T>
по существу представляет собой массив в стиле C, завернутый в struct
. Инициализация struct
s требует скобок, и для инициализации массивов также требуются фигурные скобки. Поэтому мне нужно две пары фигурных скобок:std :: array <T> Инициализация
std::array<int, 5> a = {{1, 2, 3, 4, 5}};
Но большая часть кода примера я видел использует только одну пару скобок:
std::array<int, 5> b = {1, 2, 3, 4, 5};
Как же это разрешено, и у него есть какие-либо преимущества или недостатки по сравнению с первым соглашением?
Я не уверен, что _is_ разрешено стандартом - возможно, составители, которые принимают этот код основаны на ранее C++ 11, или просто дать предупреждение, поскольку это расширение, допускающее плохо сформированный код. – ildjarn
@ildjarn Согласно Йоханнесу, это разрешено. – fredoverflow