#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.1aninitializer_list应该是 C++11 中的常量表达式,我不知道我见过多少次这样if写的构造if(arr[N]){...};那么这个断言有什么问题呢?