Fra*_*ger 2 c c++ floating-point gcc
我正在尝试使用GCC v4.3.x设置静态断言(在main函数之外):
#define STATIC_ASSERT(cond) extern void static_assert(int arg[(cond) ? 1 : -1])
STATIC_ASSERT( (double)1 == (double)1 ); // failed
Run Code Online (Sandbox Code Playgroud)
但是当我使用浮点数时,断言总是失败.
是否可以正确运行此静态断言?
C++ Standard 2003,5.19"常量表达式",第1段.
在一些地方,C++要求表达式计算为整数或枚举常量:作为数组边界(8.3.4,5.3.4),作为案例表达式(6.4.2),作为位字段长度(9.6),作为枚举器初始化器(7.2),作为静态成员初始值设定项(9.4.2),以及作为整数或枚举非类型模板参数(14.3).
constant-expression:条件表达式
一个整数常量表达式只能包含文字(2.13),枚举数,常量变量或用常量表达式(8.5)初始化的整数或枚举类型的静态数据成员,整数或枚举类型的非类型模板参数,以及sizeof表达式. 浮动文字(2.13.3)只有在转换为整数或枚举类型时才会出现. 只能使用转换为整数或枚举类型的转换.特别是,除了sizeof表达式之外,不应使用函数,类对象,指针或引用,并且不应使用赋值,递增,递减,函数调用或逗号运算符.
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |