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