Это разрешено:
int a[]{1, 2, 3};
Но не это:
auto a = new int[]{1, 2, 3};
Вы должны указать границы. Почему?
EDIT: правильный синтаксис (который не компилируется):
auto a = new (int[]){1, 2, 3};
Это дает реальное сообщение об ошибке:
error: invalid use of array with unspecified bounds