我正在使用C ++ 11。 我有一个浮点数。
float some_float = 3.0;
现在我想编译时间检查这个数字是否大于某个值。假设我想编译时间断言some_float
大于1.0
。我正在尝试这个:
static_assert(some_float > 1.0);
但是,它错误地抱怨,
error: static_assert expression is not an integral constant expression
static_assert(some_float > 1.0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题:
我在做什么错了?
如何在编译时断言some_float
设置为高于1.0
的某些内容?
答案 0 :(得分:2)
some_float
必须为constexpr
constexpr float some_float = 3.0;
如果您将some_float
简单地定义为float
,则可以在assert()
中使用,它可用于运行时;不在static_assert()
中,即编译时检查。
此外:在C ++ 11中,需要一个字符串来显示错误消息
static_assert ( some_float > 1.0f , "!" );
//..................................^^^ error message