我使用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