次のようなコードがあります。
#include <boost/optional.hpp>
::boost::optional<int> getitem();
int go(int nr)
{
boost::optional<int> a = getitem();
boost::optional<int> b;
if (nr > 0)
b = nr;
if (a != b)
return 1;
return 0;
}
Boost 1.53 を使用して GCC 4.7.2 でコンパイルする場合は、次のコマンドを使用します。
g++ -c -O2 -Wall -DNDEBUG
次の警告が発行されます。
13:3: 警告: '<em>((void)& b +4)' は、この関数で初期化されていない状態で使用される可能性があります [-Wmaybe-uninitialized]
どうやら、根本的な問題は GCC にあります。GCC Bugzillaを参照 してください。回避策を知っている人はいますか?