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