C ++ 0x将使下面的代码和类似的代码格式错误,因为它需要a到a的所谓缩小转换。double
int
int a[] = { 1.0 };
我想知道在现实世界的代码中是否经常使用这种初始化。此更改将破坏多少代码?如果您的代码受到影响,是否需要花费很多精力在代码中进行修复?
供参考,请参阅n3225的8.5.4 / 6
缩小转换是隐式转换
- 从浮点类型到整数类型,或者
- 从long double到double或float,或者从double到float,除非源是一个常量表达式,并且转换后的实际值在可以表示的值范围内(即使不能准确表示),或者
- 从整数类型或非作用域枚举类型到浮点类型,除非源是常量表达式,并且转换后的实际值将适合目标类型,并在转换回原始类型时会产生原始值,或者
- 从整数类型或无作用域枚举类型到不能表示原始类型的所有值的整数类型,除非源是常量表达式,并且转换后的实际值将适合目标类型,并在出现以下情况时产生原始值转换回原始类型。