C++:编译时断言浮点数的值

C++ : compile time assert the value of a floating point number

我正在使用 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 的值?

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