У меня есть код, похожий на следующий:
#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;
}
При компиляции с GCC 4.7.2 с Boost 1.53, используя следующую команду:
g++ -c -O2 -Wall -DNDEBUG
Выдается следующее предупреждение:
13: 3: warning: '((void) & b +4) может использоваться неинициализированным в этой функции [-Wmaybe-uninitialized]
По-видимому, проблема с корнем лежит на GCC. См. GCC Bugzilla Кто-нибудь знает обходное решение?