質問

私は探検しています Boost :: Tribool そして、次の行動に驚いた。

{
using namespace boost;

boost::tribool t(indeterminate);

assert(t==indeterminate);  // This assertion fails!
} 

ただし、これを行うと、アサートは通過します。

assert(indeterminate(t));

どちらの場合もコンパイラ警告やエラーはありません。誰もがなぜそうすべきかについて良い説明を持っていますか?

役に立ちましたか?

解決

答えはにあると思います ドキュメンテーション:

2つの不確定な値を比較した結果は不確定です(真実ではありません) - 値が何であるかわからないので、それらが等しいことはわかりません。

不確定 機能を使用して、Triboolが不確定状態にあるかどうかをテストできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top