C ++ 0X는 소위 필요로하기 때문에, 다음 코드와 유사한 코드가 잘못 형성 할 예정이다 축소 변환 (A)의 double
A와를 int
.
int a[] = { 1.0 };
이런 종류의 초기화가 실제 코드에서 많이 사용되는지 궁금합니다. 이 변경으로 인해 얼마나 많은 코드가 손상됩니까? 코드가 영향을받는 경우 코드에서이 문제를 해결하는 데 많은 노력이 필요합니까?
참고로 n3225의 8.5.4 / 6을 참조하십시오.
축소 변환은 암시 적 변환입니다.
- 부동 소수점 유형에서 정수 유형으로 또는
- long double에서 double 또는 float로 또는 double에서 float로 소스가 상수 표현식이고 변환 후 실제 값이 표현할 수있는 값의 범위 내에있는 경우를 제외하고 (정확히 표현할 수없는 경우에도)
- 정수 유형 또는 범위가 지정되지 않은 열거 유형에서 유동 소수점 유형으로, 단, 소스가 상수 표현식이고 변환 후 실제 값이 대상 유형에 맞고 원래 유형으로 다시 변환 될 때 원래 값을 생성하는 경우를 제외하고, 또는
- 정수 유형 또는 범위가 지정되지 않은 열거 유형에서 원본 유형의 모든 값을 나타낼 수없는 정수 유형으로, 단, 소스가 상수 표현식이고 변환 후 실제 값이 대상 유형에 맞고 다음과 같은 경우 원래 값을 생성합니다. 원래 유형으로 다시 변환됩니다.