为什么允许部分模板专门化?

时间:2019-04-25 08:31:36

标签: c++

我看过部分模板专用化参数列表,偶然发现了这样的例子

template <typename>
class function;
template <typename ReturnValue, typename Args,typename Args2>
class function<ReturnValue(Args,Args2)>
{
    //smth
};

ReturnValue(Args,Args2)到底是什么意思(因为它不是我所知道的类型),并且根据什么规则我可以​​写类似的东西?

谢谢

1 个答案:

答案 0 :(得分:4)

  

请问这不是我所知道的类型

实际上是。 ReturnValue(Args,Args2)的类型为“取ArgsArg2并返回ReturnValue的函数”。举个例子:

void foo(int, char);
typedef void FunctionType(int, char);

在这里,FunctionType确实是类型void(int, char),也是foo的类型。