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