是否有任何理由在c ++中使用枚举来代替已经存在的bool?

npr*_*tto 2 c++ enums boolean

我发现了一些声明这样的枚举的代码: enum boolean {FALSE,TRUE};

有没有理由使用它而不是正常truefalse已经存在于c ++中?

Tem*_*Rex 5

C++使用enum另一个用户定义的布尔值的主要缺点是它不允许从条件表达式自动转换:

enum boolean { FALSE, TRUE };

int main()
{
    boolean b;
    int i = 0;
    int j = 1;
    b = ( i == j ); // error
}
Run Code Online (Sandbox Code Playgroud)

实例

另请参阅Herb Sutter关于为什么C++选择添加内置类型的旧GotW专栏bool.

  • 这有一个"好的"错误消息:*错误:无法在赋值*中将'bool'转换为'boolean',这会增加混乱. (2认同)