c ++模板中模板<typename t,=“”t * =“”>的含义是什么?

时间:2017-06-07 16:53:03

标签: c++ templates

c ++模板中template<typename T, T*>的含义是什么? 在什么情况下,我应该使用它?

#include <iostream>
using namespace std;

template<typename T, T*> 
void test(T a)
{
    cout << "test template\n";
}

int main(int argc, char **argv)
{
    test(10);
    return 0;
}

我从上面的代码中得到了编译错误。

./test.cpp: In function ‘int main(int, char**)’:
./test.cpp:12: error: no matching function for call to ‘test(int)’

test(10);更改为test<int, int*>(10);,仍然无效。

1 个答案:

答案 0 :(得分:2)

用法是:

extern int global;

int main()
{
    test<int, &global>(10);
}

Demo