1

Stroustrup の本からの次のコードでは、私のバージョンの 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;
}

ここideone で示されているように、これはバグですか、それともコンパイラへの適切なコマンドライン引数で実行していませんか? それとも、これは純粋にセマンティック エラーであることを意味していますか?

4

2 に答える 2

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 サポートのバグだと思います。

于 2013-06-14T16:42:55.180 に答える
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
于 2013-06-14T18:01:55.113 に答える