Boost :: Tribool:奇妙な行動、またはバグ?
質問
私は探検しています Boost :: Tribool そして、次の行動に驚いた。
{
using namespace boost;
boost::tribool t(indeterminate);
assert(t==indeterminate); // This assertion fails!
}
ただし、これを行うと、アサートは通過します。
assert(indeterminate(t));
どちらの場合もコンパイラ警告やエラーはありません。誰もがなぜそうすべきかについて良い説明を持っていますか?
解決
答えはにあると思います ドキュメンテーション:
2つの不確定な値を比較した結果は不確定です(真実ではありません) - 値が何であるかわからないので、それらが等しいことはわかりません。
不確定 機能を使用して、Triboolが不確定状態にあるかどうかをテストできます。
所属していません StackOverflow