使用指针作为模板非类型参数

时间:2015-05-01 10:02:07

标签: c++ arrays templates pointers callback

我想使用数组指针(带数组运算)作为非类型参数。我知道这个论点应该在编译时知道,但对于固定大小的全局数组是不是这样呢?

此示例可以打印前两行,但不能打印第三行。有没有解决方法呢?

编辑:我正在寻找的答案不仅仅是aa+1,还有aa+ii小于{{1}的答案}}

aa

1 个答案:

答案 0 :(得分:6)

[temp.arg.nontype] 的注释除外:

  

3 - [注意:数组元素的地址和非静态类成员的名称或地址是不可接受的   模板参数。 [...]

解决方法可能是将数组索引作为另一个模板参数提供:

template <int *n, unsigned N = 0>
void myWrapper() {
    print(n[N]);
}

// ...
myCall(myWrapper<aa, 1>); 
相关问题