#include <iostream>
int main() {
int a[] = { 21, 213, 45 };
static_assert(a[22], "error for a\n");
return (0);
}
我有一个形状像数组的查找表int
,我需要在编译时检查[]
运算符的使用是否可能导致超出范围的读取。
我知道 astatic_assert
基本上需要两件事:
- 常量表达式
- 给定的表达式应返回 a
bool
或可转换/等价于 abool
现在 in g++ 4.8.1
aninitializer_list
应该是 C++11 中的常量表达式,我不知道我见过多少次这样if
写的构造if(arr[N]){...}
;那么这个断言有什么问题呢?