C ++我期待一个缩小的转换错误,但没有得到它

时间:2013-06-14 16:36:15

标签: c++ c++11 type-conversion gcc4.7

Stroustrup's book的以下代码中,我们会收到来自缩小转换的错误的警告,该错误在我的版本GCC上没有发生(4.7.2)

#include <iostream>

using namespace std;

int main()
{
    int i1 = 7.2;
    int i2{7.2};
    cout << i1 << " " << i2 << endl;
    return 0;
}

如此处所示at ideone这是一个错误,还是我没有使用编译器的相应命令行参数运行?或者这是纯粹的语义错误?

2 个答案:

答案 0 :(得分:2)

使用g ++ 4.8.1:

foo.cpp: In function 'int main()':
foo.cpp:8:15: warning: narrowing conversion of '7.2000000000000002e+0' from 'double' to 'int' inside { } [-Wnarrowing]
     int i2{7.2};
               ^

我认为这只是4.7.2的c ++ 11支持中的一个错误。

答案 1 :(得分:1)

当我使用-std = c ++ 0x:

时,我收到GCC 4.7.3的缩小警告
g++ -std=c++0x test.cpp 
test.cpp: In function ‘int main()’:
test.cpp:8:23: warning: narrowing conversion of ‘7.2000000000000002e+0’ from ‘double’ to ‘int’ inside { } [-Wnarrowing]

g++ --version
g++ (GCC) 4.7.3