boost::triboolという真/偽/不定という三種の論理値を扱う型が存在します。
http://www.boost.org/doc/libs/1_59_0/doc/html/tribool.html
例
初期化,代入,コピー
tribool b(true); b = false; b = indeterminate; tribool b2(b);
条件
tribool b = some_operation(); if (b) { // b is true } else if (!b) { // b is false } else { // b is indeterminate }