سؤال

أنا أستكشف Boost :: Tribool وفوجئت بالسلوك التالي.

{
using namespace boost;

boost::tribool t(indeterminate);

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

ومع ذلك ، إذا قمت بذلك ، فإن التأكيد يمر.

assert(indeterminate(t));

لا توجد تحذيرات أو أخطاء في كلتا الحالتين. أي شخص لديه تفسير جيد لماذا يجب أن يكون هذا؟

هل كانت مفيدة؟

المحلول

أعتقد أن الجواب في توثيق:

نتيجة لمقارنة قيمتين غير محددين غير محدد (غير صحيح) - لا نعرف ما هي القيم ، لذلك لا يمكننا معرفة أنها متساوية ؛

ال غير محدد يمكن استخدام الوظيفة لاختبار ما إذا كان Trbool في حالة غير محددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top