C ++ 0xは、aから。へのいわゆるナローイング変換を必要とするため、次のコードおよび同様のコードを不正な形式double
にしint
ます。
int a[] = { 1.0 };
この種の初期化が実際のコードで多く使用されているかどうか疑問に思います。この変更によっていくつのコードが壊れますか?コードがまったく影響を受けている場合、コードでこれを修正するのは大変な努力ですか?
参考までに、n3225の8.5.4 / 6を参照してください。
ナローイング変換は暗黙的な変換です
- 浮動小数点型から整数型へ、または
- long doubleからdoubleまたはfloat、またはdoubleからfloat。ただし、ソースが定数式であり、変換後の実際の値が表現可能な値の範囲内にある場合(正確に表現できない場合でも)、または
- ソースが定数式であり、変換後の実際の値がターゲットタイプに適合し、元のタイプに変換されたときに元の値を生成する場合を除いて、整数型またはスコープなしの列挙型から浮動小数点型へ、または
- 整数型またはスコープなしの列挙型から、元の型のすべての値を表すことができない整数型へ。ただし、ソースが定数式であり、変換後の実際の値がターゲット型に適合し、次の場合に元の値を生成する場合を除きます。元のタイプに変換されます。