Estoy usando la variante boost :: y tengo problemas para compilar en modo de lanzamiento. Estoy trabajando en VC2010 con nivel de advertencia 4 y advertencias como errores. El código siguiente compila bien en el modo de depuración, pero en el modo de lanzamiento recibo un montón de advertencias C4702 del "Código inalcanzable" emitidas en el tiempo de enlace (presumiblemente recibo advertencias del compilador porque hay generación de código de tiempo de enlace cuando las optimizaciones están habilitadas).¿Hay alguna solución para esta advertencia de tiempo de enlace C4702?
¿Alguien ha desactivado con éxito estas advertencias en esta situación? Preferiría mantener el alto nivel de advertencia y las advertencias como errores si es posible.
#pragma warning(disable:4702)
... parece que no funciona aquí. Aquí hay un código de ejemplo:
#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;
}
El aviso se activa por el operador de plantilla(), que estoy usando para atrapar los intentos de aplicar el visitante a malos tipos de variantes.
Pulgares arriba para el nivel de advertencia 4 + advertencia como errores! –
¿Usted ha intentado poner el pragma en la parte superior del archivo, antes de que la incluye? Y @Matthieu, definitivamente, elimina los errores antes de que aparezcan. – ssube
He intentado poner el pragma en la parte superior del archivo, alrededor de la definición de la clase, alrededor de la llamada a apply_visitor y en la parte superior de stdafx.h. Ninguno de estos parece trabajo, desafortunadamente. – RobH