Я использую Boost :: Вариант и у меня проблемы с компиляцией в режиме релиза.Я работаю в VC2010 с уровнем предупреждения 4 и предупреждениями как ошибки.Приведенный ниже код прекрасно компилируется в режиме отладки, но в режиме выпуска я получаю кучу предупреждений C4702 «Недоступный код», отправляемых во время соединения (предположительно, здесь я получаю предупреждения компилятора, поскольку при включенной оптимизации генерируется код времени соединения)
Кто-нибудь успешно отключил эти предупреждения в этой ситуации?Я бы предпочел сохранить высокий уровень предупреждений и предупреждений как ошибки, если это возможно.
#pragma warning( disable:4702 )
... похоже, здесь не работает.Вот пример кода:
#include <boost/variant.hpp>
struct null{};
typedef boost::variant< null, double > variant_t;
class addition_visitor
: public boost::static_visitor< variant_t >
{
public:
template< typename T, typename U >
variant_t operator()( const T&, const U& ) const
{
throw( "Bad types" );
}
variant_t operator()( const double& left, const double& right ) const
{
return variant_t( left * right );
}
};
int main(int /*argc*/, char** /*argv*/)
{
variant_t a( 3.0 ), b( 2.0 );
variant_t c = boost::apply_visitor( addition_visitor(), a, b );
return 0;
}
Предупреждение запускается шаблонным оператором (), который я использую для отлова попыток применить посетителя к неверным типам вариантов.