将std :: map与使用普通的非抛出复制构造函数的类型一起使用时,会为xtree中的不可达代码引发编译器警告/错误(警告级别4,发布模式)。这是因为std :: map在其中有一个try-catch,这有助于在发生异常时维护树的状态,但是编译器会发现,如果存储的元素不存在,catch语句将永远不会被调用扔。这些警告可以通过下面的代码在.cpp文件的顶部,易于抑制:是否有替代方法抑制xtree中不可达代码的警告?
#pragma warning(push)
#pragma warning(disable:4702)
#include <xtree>
#pragma warning(pop)
是否有办法绕过这个警告/错误不改变警戒线,建设调试,抑制警告,或在地图中使用不同的类型?有没有计划在标准库中改变它?
更新:
也许它是编译器特定的。我正在使用vc7。下面 错误是:
C:\程序Files \ Microsoft Visual Studio .NET中2003 \ VC7 \包括\的XTree(1116):错误C2220:警告视为错误 - 没有 '对象' 文件生成
Ç :\ program files \ microsoft visual studio .net 2003 \ vc7 \ include \ xtree(1116):warning C4702:无法访问的代码
显然xtree被std :: map使用。
这是一个编译器问题,没有“xtree标准库”。 – MSalters 2010-07-13 08:23:24