В C ++ 14 задан следующий код:
void foo() {
double d = 5.0;
auto p1 = new int[d];
}
clang компилирует это без диагностики, в то время как gcc, с другой стороны, выдает следующую диагностику ( смотри в прямом эфире в godbolt ):
error: expression in new-declarator must have integral or enumeration type
7 | auto p1 = new int[d];
| ^
Я специально обозначил этот C ++ 14, потому что в режиме C ++ 11 clang воспринимает это как плохо сформированное и выдает следующую диагностику ( смотри вживую в Godbolt ):
error: array size expression must have integral or unscoped enumeration type, not 'double'
auto p1 = new int[d];
^ ~
Правильный ли лязг?Если так, что изменилось в C ++ 14, чтобы разрешить это?