Typedef一个模板参数

use*_*112 0 c++ templates c++11

我有代码,我想键入一个模板化的类,以便于阅读:

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){
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我发现很多关于未找到模板标识符的错误.该怎么做?我试图遵循这个例子:

如何输入定义模板类?

Pub*_*bby 5

templateClass不是一种类型; 这是一个类型模板.在使用template它定义模板化函数时,您仍然需要使用关键字.

template<int A, int B>
void aFunction(templateClass<A, B>& tc);
Run Code Online (Sandbox Code Playgroud)


isa*_*nae 5

一个别名模板时,你只知道是有用的一些预先模板参数:

template <class Value>
using lookup = std::map<std::string, Value>;

lookup<int> for_ints;
lookup<double> for_doubles;
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您不清楚是否需要为类模板使用不同的名称:

template <class A, class B>
class templateClass;

template <class A, class B>
using otherName = templateClass<A, B>;
Run Code Online (Sandbox Code Playgroud)

如果您已经知道所需的类型:

typedef templateClass<int, double> int_double;
Run Code Online (Sandbox Code Playgroud)

或者如果您只知道一种类型:

template <class B>
using with_int = templateClass<int, B>;
Run Code Online (Sandbox Code Playgroud)

在任何情况下,您都不能拥有与类同名的别名,就像您正在做的那样templateClass.