Boost.Variant、 classに220個の「到達不能コード」警告がありますboost::detail::variant::invoke_visitor
:
template <typename T>
result_type internal_visit(T& operand, int)
{
return visitor_(operand);
}
.
boost_1_50_0\boost\variant\variant.hpp(859): warning C4702: unreachable code
ラインreturn visitor_(operand);
。
まず第一に、この単純な 1 行の関数に到達できないコードが含まれている可能性があるのはなぜでしょうか? 到達できないコードはどれですか?
単純なケースではこの警告を再現できません。原因が正確にわからないためです。operator==
で使用されるクラスに実装した後に警告が表示されましたboost::variant
。
環境: VC++ 2010、Boost 1.50
編集:
警告は、リリース ビルド (最適化) でのみ発生し、boost::variant
s を比較した場合にのみ発生します。boost::variant
プリミティブ型とカスタム型で使用します。カスタム型は、典型的なbool operator(CT const& lh, CT const& rh)
フリー関数として実装されます。