接下来的两个声明之间会有什么区别:

template<class T, class functor>
methodReturnType className::methodName(functor f)

和:
template<class T>
template<class functor>
methodReturnType className::methodName(functor f)

我试图编写一种可与仿函数arg一起使用的方法。
第二个声明使我避免将整个类声明为T和仿函数的模板。我想让模板类className仅包含一个参数T,但是在该类内部,一个方法具有另一个参数仿函数,而没有将整个类声明为两个参数的模板。
它起作用了,但是我没有完全理解它。

最佳答案

根据语言规则,第二种变体适合您的情况。

n3376 14.5.2/1

关于c++ - 具有两个参数的模板与每个具有一个参数的模板的两个声明之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17521446/

10-11 22:54
查看更多