【发布时间】:2010-07-12 22:07:44
【问题描述】:
将 std::map 与使用普通、非抛出、复制构造函数的类型一起使用时,对于 xtree 中无法访问的代码,将抛出编译器警告/错误(警告级别 4,发布模式)。这是因为 std::map 中有一个 try-catch,它有助于在发生异常时维护树的状态,但是编译器发现如果存储的元素不调用 catch 语句,则永远不会调用扔。使用 .cpp 文件顶部的以下行可以轻松抑制这些警告:
#pragma warning(push)
#pragma warning(disable:4702)
#include <xtree>
#pragma warning(pop)
有没有办法绕过这个警告/错误而不改变警告级别、构建调试、抑制警告或在地图中使用不同的类型?是否有计划在标准库中对此进行更改?
更新:
也许它是特定于编译器的。我正在使用vc7。
错误如下:
c:\program files\microsoft visual studio .net 2003\vc7\include\xtree(1116):错误 C2220:警告视为错误 - 未生成“对象”文件
c:\program files\microsoft visual studio .net 2003\vc7\include\xtree(1116) : 警告 C4702: unreachable code
显然 std::map 使用了 xtree。
【问题讨论】:
-
这是一个编译器问题。没有“xtree 标准库”。
标签: c++ standard-library