有没有办法在编译时断言两个常量表达式相等呢?
例如,我希望这会导致编译时错误。
但是我希望这不会引起错误。
编辑:上面的内容有所简化。我的情况更像是这样的。
例如,我希望这会导致编译时错误。
enum { foo=263, bar=264 };
SOME_EXPRESSION(foo,bar)
但是我希望这不会引起错误。
enum { foo=263, bar=263 };
SOME_EXPRESSION(foo,bar)
编辑:上面的内容有所简化。我的情况更像是这样的。
some_other_file_I_dont_control.h:
class X
{
public:
enum { foo=263 };
}
my_file.h:
enum { bar=something+somethingelse }; // bar should equal X::foo
SOME_EXPRESSION(X::foo, bar)
assert()
成员,只使用默认构造函数:StaticAssert<1==1>();
。 - Julien-Lbool
,为什么不能传递在运行时被程序创建的任何布尔值呢?我正在尝试您的新代码,并传递我在运行时更新的布尔值,但编译器失败并显示非类型模板参数不是常量表达式
。 - johnbakersconstexpr
)。 - Chad