12
に消える:警告は、私はこの簡単なプログラムのコンパイルC++ 11
をし、私はそれらの警告を得る:
もちろん$ g++ -std=c++11 -Wall -Wextra -Wpedantic foo.cpp -o foo
foo.cpp: In function ‘int main()’:
foo.cpp:21:9: warning: unused variable ‘bar’ [-Wunused-variable]
Bar bar;
^
foo.cpp:23:11: warning: ‘foo.Foo::b’ is used uninitialized in this function [-Wuninitialized]
printf("%d %d\n", foo.a, foo.b);
^
foo.cpp:23:11: warning: ‘foo.Foo::a’ is used uninitialized in this function [-Wuninitialized]
が、これは我々が期待するものです。しかし、Bar
デフォルトのctorのコメントを外すと、すべての警告が消える問題があります。
なぜBar
ctorはFoo
の警告を無効にするのですか?
私のGCCバージョンはg++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609
です。
問題はC++ 03ではなく、C++ 11以降でのみ発生します。
g ++(GCC)6.1.0では、警告[Demo](http://coliru.stacked-crooked.com/a/19043d798802ac4a)が表示されます。 – Jarod42
Jarodが指摘したように、これは修正されたコンパイラのバグです。 – StoryTeller
@ Jarod42 OPのように、 '-O2'なしで試してみてください。 –