Ответ 1
Преимущество в том, что у вас есть... меньше, чем тип. Но недостатком является то, что вам разрешено оставлять скобки, когда декларация имеет эту форму. Если вы оставите =
, или если массив является членом, и вы инициализируете его с помощью 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} };