我使用boost :: variant,并且在发布模式下编译时遇到问题。我在VC2010中工作,警告级别为4,警告为错误。下面的代码在调试模式下编译得很好,但是在发布模式下,我得到了一堆链接时发出的“无法到达的代码”C4702警告(大概我在这里收到编译器警告,因为启用优化时会生成链接时间代码。)有没有解决此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;
}
警告是由模板运算符(),我使用的是赶上尝试访问者适用于恶劣变异类型的触发。
大拇指! – 2011-04-01 12:26:40
您是否尝试过把编译在文件的顶部,包括前?并且@Matthieu绝对会在它们显示之前杀死错误 – ssube 2011-04-04 20:19:34
我曾尝试在文件顶部,类定义周围,apply_visitor调用周围以及stdafx.h顶部放置编译指示。工作,不幸的是, – RobH 2011-04-05 07:15:36