繁体   English   中英

无法在C ++中创建类似函数的模板

[英]Unable to create a function-like template in C++

我正在尝试创建一个模板类,该模板类将函数的返回类型和参数作为模板参数,例如: new static_detour<int(const char*, int)>()

因为这是我们在std函数模板中可以看到的相同语法,所以我尝试复制在function.h找到的相同结构,所以到目前为止,这是我的课程:

template<typename Result, typename ... Arguments>
class static_detour<Result(Arguments...)>
{
}

但是,这不起作用,并且当我尝试从.cpp文件使用该文件时,编译器将引发error C2988: unrecognizable template declaration/definition 我可以在编译良好的类名后删除<>,但是后来我不能使用Arguments参数。

这在C ++中可能吗,还是我做错了什么?

您需要声明一个不受限制的类模板,该模板定义了该类所需的模板参数数量:

template <class T>
class static_detour;

声明类模板的任何完整或部分专业化之前,它们仅接受特定的参数:

template<typename Result, typename ... Arguments>
class static_detour<Result(Arguments...)>
{
}

如果对于某些ResultArguments...T的形式为Result(Arguments...) ,也就是说,如果对专业化的推论成功,则static_detour<T>类型将引用专业化。 否则,它将引用主模板。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM