I agree with Steve that the C4512 warning is a low-priority bug: it is
easily worked around and it's only a level 4 warning. But, I must not be
understanding Boost.Variant (1.35.1) because the following simple example
generates several other VC9 warnings: C4345 (level 2) and C4100 (level 4):
#include
#ifdef BOOST_MSVC
# pragma warning( push )
# pragma warning( disable : 4512 )
#endif
#include
#ifdef BOOST_MSVC
# pragma warning( pop )
#endif
#include <iostream>
using namespace std;
struct C1 {};
struct C2 {};
struct vis : public boost::static_visitor<> {
void operator()( C1 & ) const { cout << "C1" << endl; }
void operator()( C2 & ) const { cout << "C2" << endl; }
};
int main( int, char * ) {
boost::variant< C1, C2 > v;
boost::apply_visitor( vis(), v );
return 0;
}
Disabling these in the manner above works but I'm hoping one of its
authors/maintainers can comment on intended usage of Boost.Variant with VC9?
I'm wary of disabling each warning I encounter. That makes it difficult for
me to know which warnings are known to be harmless and which indicate errors
in my code.
BTW: By "compiler-independent way" I mean using macros to
wrap compiler-specific pragmas (as above).
John Fearnside
-----Original Message-----
AMDG
hfye-wila@spamex.com wrote:
*If* this warning is truly harmless, should this be considered a bug in
Boost.Variant?
I consider this a low priority bug.
Shouldn't Boost.Variant disable benign warnings in a
compiler-independent way?
This warning is Visual Studio specific.
In Christ,
Steven Watanabe
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users