我有代码,我想键入一个模板化的类以便于阅读:
template<int A, int B>
using templateClass = templateClass<A,B>;
void aFunction(templateClass& tc);
int main(){
templateClass<10, 34> tc;
aFunction(tc);
}
void aFunction(templateClass& tc){
...
}
但是我发现很多关于未找到模板标识符的错误。该怎么做?我试图效仿这个例子:
答案 0 :(得分:5)
templateClass
不是一种类型;这是一个类型模板。在使用它定义模板化函数时,您仍然需要使用template
关键字。
template<int A, int B>
void aFunction(templateClass<A, B>& tc);
答案 1 :(得分:5)
如果您事先只知道某些模板参数,别名模板非常有用:
template <class Value>
using lookup = std::map<std::string, Value>;
lookup<int> for_ints;
lookup<double> for_doubles;
在您的情况下,您不清楚是否需要为类模板使用其他名称:
template <class A, class B>
class templateClass;
template <class A, class B>
using otherName = templateClass<A, B>;
如果您已经知道所需的类型:
typedef templateClass<int, double> int_double;
或者你只知道一种类型:
template <class B>
using with_int = templateClass<int, B>;
在任何情况下,您都不能拥有与类同名的别名,就像您为templateClass
所做的那样。