Linux で g++ 4.7.3 を使用する C++98 プロジェクトを使用していますが、「C++11 では変換の縮小が不適切です」という警告が多数表示されます。
どうして?C++11すら使ってない
これらの警告は、「これは現在有効ですが、将来的には無効になります」という警告です。これらは、有効な C++98 のコード用に特別に設計されており、C++98 モードではコンパイル エラーは発生しませんが、将来 C++11 に切り替える場合に問題が発生する可能性があります。デフォルトでは有効になっていませんが、有効になっています-Wall
。それが起こらないと本当に確信している場合は、次のように変更でき-Wall
ます-Wall -Wno-c++11-compat
コード例:
unsigned u[] = {-1};
$ g++ -c test.cc -ansi -pedantic $ g++ -c test.cc -ansi -pedantic -Wall test.cc:1:19: 警告: { } 内の '-1' から 'unsigned int' への '-1' のナローイング変換は、C++11 では不適切な形式です [-Wnarrowing] 符号なし u[] = {-1}; ^ $ g++ -c test.cc -ansi -pedantic -Wall -Wno-c++11-compat