些細な、スローしない、コピーコンストラクターを使用するタイプで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:到達不能コード
どうやらxtreeはstd::mapによって使用されています。