Преимущество в том, что у вас есть ... меньше печатать. Но недостатком является то, что вам разрешено снимать скобки только тогда, когда декларация имеет такую форму. Если вы пропустите =
, или если массив является членом, и вы инициализируете его с member{{1, 2, 3, 4, 5}}
, вы не сможете передать только одну пару фигурных скобок.
Это связано с тем, что возникли опасения по поводу возможной неоднозначности перегрузки при передаче скобок в функции, как в f({{1, 2, 3, 4, 5}})
. Но это вызвало некоторое обсуждение, и был сгенерирован отчет о проблеме.
По сути, инициализация = { ... }
всегда могла пропускать скобки, как в
int a[][2] = { 1, 2, 3, 4 };
Это не ново. Новым является то, что вы можете опустить =
, но тогда вы должны указать все скобки
int a[][2]{ {1, 2}, {3, 4} };