Restrições de conversões em C ++ 0x. Sou apenas eu ou isso soa como uma mudança radical?

O C ++ 0x tornará mal formado o código a seguir e um código semelhante, pois requer o chamadorestrição de conversão de umdouble para umint.

int a[] = { 1.0 };

Gostaria de saber se esse tipo de inicialização é muito usado no código do mundo real. Quantos códigos serão quebrados por essa alteração? É muito difícil consertar isso no seu código, se ele for afetado?

Para referência, consulte 8.5.4 / 6 da n3225

Uma conversão de restrição é uma conversão implícita

de um tipo de ponto flutuante para um tipo inteiro, oude long double para double ou float, ou de double para float, exceto onde a fonte é uma expressão constante e o valor real após a conversão está dentro do intervalo de valores que podem ser representados (mesmo que não possa ser representado exatamente), oude um tipo inteiro ou tipo de enumeração sem escopo para um tipo de ponto flutuante, exceto onde a fonte é uma expressão constante e o valor real após a conversão se ajustará ao tipo de destino e produzirá o valor original quando convertido novamente no tipo original, oude um tipo inteiro ou tipo de enumeração sem escopo para um tipo inteiro que não pode representar todos os valores do tipo original, exceto onde a fonte é uma expressão constante e o valor real após a conversão se ajustará ao tipo de destino e produzirá o valor original quando convertido de volta ao tipo original.

questionAnswers(8)

yourAnswerToTheQuestion