Reducción de conversiones en C ++ 0x. ¿Soy solo yo, o esto suena como un cambio radical?

C ++ 0x hará que el siguiente código y un código similar estén mal formados, ya que requiere un llamadoreducción de conversión de undouble a unint.

int a[] = { 1.0 };

Me pregunto si este tipo de inicialización se usa mucho en el código del mundo real. ¿Cuántos códigos se romperán con este cambio? ¿Es mucho esfuerzo arreglar esto en su código, si su código se ve afectado?

Para referencia, vea 8.5.4 / 6 de n3225

Una conversión estrecha es una conversión implícita

de un tipo de punto flotante a un tipo entero, ode largo doble a doble o flotante, o de doble a flotante, excepto cuando la fuente es una expresión constante y el valor real después de la conversión está dentro del rango de valores que pueden representarse (incluso si no puede representarse exactamente), ode un tipo entero o un tipo de enumeración sin ámbito a un tipo de punto flotante, excepto cuando el origen es una expresión constante y el valor real después de la conversión se ajustará al tipo de destino y producirá el valor original cuando se convierta de nuevo al tipo original, odesde un tipo entero o un tipo de enumeración sin ámbito hasta un tipo entero que no puede representar todos los valores del tipo original, excepto cuando el origen es una expresión constante y el valor real después de la conversión se ajustará al tipo de destino y producirá el valor original cuando convertido de nuevo al tipo original.

Respuestas a la pregunta(8)

Su respuesta a la pregunta