Иногда на компиляторах GCC ниже версии 5.1 вы можете получить предупреждение -Wmaybe-uninitialized при совпадении с опцией -02 на совершенно действительный boost::факультативно. Например, в этой программе:
#include <boost/optional.hpp>
boost::optional<int> getitem();
int main(int argc, const char *[])
{
boost::optional<int> a = getitem();
boost::optional<int> b;
if (argc > 0)
b = argc;
if (a != b)
return 1;
return 0;
}
Это ошибка в компиляторе. В качестве обхода (предоставляется в это вопрос о переливе стока) используется следующий способ инициализации опционального, не содержащего значения:
boost::optional<int> b = std::make_optional(false, int());
Это явно избыточно, но делает предупреждение исчезающим.