1
私はVS2008を使用しており、boost 1.51から1.61に変更しました。残念ながら、ブーストがboost::optional<T>
を変更し、明示的なBOOLするには、オプションからキャストを作ることにした、すなわち、以下のスニペットは、あなたがこの作品を作るためにbool
にoptType
を明示的にキャストする必要があり、もうboost :: optionalは暗黙の関数を変更しました
boost::optional<TYPE> optType;
TYPE t = default;
if (optType)
t = optType;
有効ではありません。
これはまだ(誤った結果ofcで)まだコンパイルされており、使用されている場所を検出できません。誰もがそれらの場所を検出するための(侵入的な)方法を知っていますか?
私は、boost1.51 hpp-fileで非推奨の暗黙のキャストをマークしようとしましたが、何らかの理由でコンパイラが警告を表示しません。
私が見なければならないコードの量は数十万行であり、私はこれを必要としています。あなたの特定のスニペットで
に上記のコードでは、 'explicit'に問題がないことができます。おそらく、あなたが使用するブールへの明示的な変換は 'operator bool'以外の何かを行います。 –
うまくいけば、 '明示的な演算子bool()'は 'if'条件で動作する必要があります。それがうまくいかなかったら、それはコンパイルされないでしょう。_ "さらに残念なのは、これが(まだ間違った結果を伴って)コンパイルされているということです。" _意味がありません。問題を示す完全なコードを入力してください(望ましくはキーワード 'default'を悪用することなく!) –
IIRC、VS2008は変換演算子で' explicit'をサポートしていません。 Boostは、おそらく何らかの種類の「安全なブール」にデフォルト設定されています。オペレータが最終的にどのように見えるかを見るには、事前処理されたファイルを(MCVEに基づいて)何らかの形でダンプしてから、ブーストソースに注釈を付けることができます。 – Niall