C ++ 0x сделает следующий код и аналогичный код некорректным, потому что для этого требуется так называемое сужающее преобразование из ] double
в int
.
int a[] = { 1.0 };
Мне интересно, часто ли этот вид инициализации используется в реальном коде. Сколько кода будет нарушено этим изменением? Сложно ли исправить это в вашем коде, если он вообще затронут?
Для справки см. 8.5.4 / 6 из n3225
Сужающее преобразование - это неявное преобразование
- из числа с плавающей точкой. точечный тип в целочисленный тип, или
- от long double до double или float, или от double до float,