【发布时间】:2012-06-18 11:09:31
【问题描述】:
我正在使用一个库,它公开了一个可以使用的接口。这个库的功能之一是这样的:
template <int a>
void modify(){}
我必须将参数从 1 修改为 10,即使用从 1 到 10 的模板参数调用 modify。为此,我编写了这段代码(代码的基本版本,实际代码要大得多)。
for(int i=0; i<10; i++){
modify<i>();
}
在编译时我收到以下错误
error: 'i' cannot appear in constant-expression
在浏览了互联网上的一些链接后,我知道我不能将任何值作为模板参数传递,而模板参数在编译时不会被评估。
我的问题如下:
1. 为什么编译器不能在编译时评估i?
2.在不改变API接口的情况下,还有其他方法可以实现我想要实现的目标吗?
我还有一件事要做。调用 modify as modify 其中 VAR 是某些函数计算的输出。我怎样才能做到这一点?
【问题讨论】: