Mat*_*Mat 4 c++ templates typename
我习惯写这样的模板:
template<typename T>
void someFunction(SomeClass<T> argument);
Run Code Online (Sandbox Code Playgroud)
但是 - 现在我在另一个写成这样的线程中遇到了模板:
template<U>
void someFunction(SomeClass<U> argument);
Run Code Online (Sandbox Code Playgroud)
据我所知,可以互换地使用"typename"和"class"(除了有关嵌套类型的一些细节......).但如果我不在括号中放一个关键字,这意味着什么呢?
谢谢!
有问题的线程: 为智能指针编写复制构造函数的问题
ken*_*ytm 13
那段代码错了(拼写错误).必须有typename或class在这种情况下.
但是,这并不意味着所有模板参数都必须以typename/ 开头class.这是因为除了类型之外,模板参数也可以是整数常量,因此以下代码可以工作:
// template <int n>, but n is not used, so we can ignore the name.
template <int>
void foo(std::vector<int>* x) {
}
int main () {
foo<4>(0);
}
Run Code Online (Sandbox Code Playgroud)
以下是:
typedef int U;
// template <U n>, but n is not used, so we can ignore the name.
template <U>
void foo(std::vector<U>* x) {
}
int main () {
foo<4>(0);
}
Run Code Online (Sandbox Code Playgroud)
这就是我U在评论中询问是否为typedef的原因.