我想使用数组指针(带数组运算)作为非类型参数。我知道这个论点应该在编译时知道,但对于固定大小的全局数组是不是这样呢?
此示例可以打印前两行,但不能打印第三行。有没有解决方法呢?
编辑:我正在寻找的答案不仅仅是aa+1
,还有aa+i
个i
小于{{1}的答案}}
aa
答案 0 :(得分:6)
[temp.arg.nontype] 的注释除外:
3 - [注意:数组元素的地址和非静态类成员的名称或地址是不可接受的 模板参数。 [...]
解决方法可能是将数组索引作为另一个模板参数提供:
template <int *n, unsigned N = 0>
void myWrapper() {
print(n[N]);
}
// ...
myCall(myWrapper<aa, 1>);