相关疑难解决方法(0)

将变量作为模板参数传递

我正在使用一个库来公开一个可以使用的接口.这个库的一个功能是这样的:

template <int a>
void modify(){}
Run Code Online (Sandbox Code Playgroud)

我必须修改从1到10的参数,即modify使用模板参数从1到10 调用.为此,我编写了这段代码(代码的基本版本,实际代码要大得多).

for(int i=0; i<10; i++){
    modify<i>();
}
Run Code Online (Sandbox Code Playgroud)

在编译时,我收到以下错误

error: 'i' cannot appear in constant-expression
Run Code Online (Sandbox Code Playgroud)

通过互联网上的一些链接后,我开始知道我不能传递任何值作为模板参数,这在编译时不会被评估.我的问题如下:1.为什么i编译时无法编译评估?2.还有其他任何方法可以实现我想要在不改变API接口的情况下实现的目标吗?


还有一件事我想做.调用修改为修改,其中VAR是某些功能计算的输出.我怎样才能做到这一点?

c++ templates

22
推荐指数
1
解决办法
2万
查看次数

如何通过引用将数组传递给函数模板

我正在学习c ++模板概念.我不明白以下几点.

#include <iostream>
#include <typeinfo>

using namespace std;

template <typename T>
T fun(T& x)
{
 cout <<" X is "<<x;
 cout <<"Type id is "<<typeid(x).name()<<endl;
}


int main ( int argc, char ** argv)
{
   int a[100];
   fun (a);
}
Run Code Online (Sandbox Code Playgroud)

我在尝试什么?

1)T fun(T&x)

这里x是一个引用,因此不会将'a'衰减为指针类型,但在编译时,我收到以下错误.

 error: no matching function for call to ‘fun(int [100])’
Run Code Online (Sandbox Code Playgroud)

当我尝试非引用时,它工作正常.据我所知,数组被衰减为指针类型.

c++

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

templates ×1