, Ранее правильно сформированный код, такой как char c [] = {i, 0}; (где я только когда-либо буду в пределах диапазона char) вызвал ошибки и должен был быть изменен на char c [] = {(char) i, 0}

0x сделает следующий код и подобный код некорректным, потому что он требует так называемогосужение конверсии изdouble кint.

int a[] = { 1.0 };

Мне интересно, используется ли этот тип инициализации в коде реального мира. Сколько кода будет нарушено этим изменением? Много ли усилий для того, чтобы исправить это в вашем коде, если ваш код вообще затронут?

Для справки см. 8.5.4 / 6 n3225

Сужающее преобразование - это неявное преобразование

от типа с плавающей точкой к целочисленному типу, илиот long double до double или float, или от double до float, за исключением случаев, когда источник является константным выражением, а фактическое значение после преобразования находится в диапазоне значений, которые могут быть представлены (даже если они не могут быть представлены точно), илиот целочисленного типа или типа перечисления с незаданной областью до типа с плавающей точкой, за исключением случаев, когда источником является константное выражение, а фактическое значение после преобразования будет соответствовать целевому типу и будет выдавать исходное значение при преобразовании обратно в исходный тип, илиот целочисленного типа или типа перечисления с незаданной областью до целочисленного типа, который не может представлять все значения исходного типа, за исключением случаев, когда источником является постоянное выражение, а фактическое значение после преобразования будет соответствовать целевому типу и будет создавать исходное значение, когда преобразован обратно в исходный тип.