标签: tribool

Boost :: tribool:奇怪的行为,还是bug?

我正在探索boost :: tribool,并对以下行为感到惊讶.

{
using namespace boost;

boost::tribool t(indeterminate);

assert(t==indeterminate);  // This assertion fails!
} 
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,断言传递.

assert(indeterminate(t));
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下都没有编译器警告或错误.任何人都有一个很好的解释为什么这应该是?

c++ boost tribool

6
推荐指数
1
解决办法
1650
查看次数

支持3值逻辑的C++库:0,1,X

我正在使用C++编写的微处理器模拟器.

我正在寻找一种方法来模拟刚刚启动但尚未以任何方式重置的硬件中的状态元素.真实的状态元素将具有0或1的未知值,但在软件模型中,这通常被建模为a X,意思是未知的.

我正在寻找一个C++库,可以模拟这些X值,包括它们的传播.也就是说,它必须知道如何使用Xes 处理逻辑和算术运算:

1 AND X = X
0 AND X = 0
1  +  X = X
Run Code Online (Sandbox Code Playgroud)

等等...

有没有这样既稳定又快速的图书馆?

编辑:

我忽略了提到我当前的代码适用于bitvectors.更准确地说,我使用标准uint_*t数据类型,这些是我想要替换的.无论我使用哪种库,它都必须支持算术,移位和逻辑运算符才能使用它.

c++ tribool

6
推荐指数
3
解决办法
1189
查看次数

标签 统计

c++ ×2

tribool ×2

boost ×1