В чем заключается разница между new double[n] и new (double[n])?

Читал документацию об операторе new на cppreference и увидел следующий пример:

int n = 42;
auto p1 = new  double[n][5];  // OK
auto p2 = new (double[n][5]); // error: syntax (1) cannot be used for dynamic arrays

Хотелось бы узнать:

  1. Чем отличается выделение памяти для p1 и p2.
  2. Почему нельзя использовать non-const n во втором случае.

Ответы (0 шт):