我知道有可能实现这样的目标:
template<typename T_Signature>
class FooBar;
template<typename T_Return, typename ... T_Params>
class FooBar<T_Return(T_Params ...)>
{
...
};
但是,普通函数不支持(部分)特化。是否仍然可以获得相同的效果? E.g:
std::function<void(int,std::string)> x = function_proxy<void(int,std::string)>(&some_func);
我想要做的是有一个普通的(名称空间/全局)函数( - &gt;不包含在任何类或其他结构中),它将函数签名作为模板参数。
答案 0 :(得分:0)
功能签名只是一种类型。所以你可以毫无疑问。
如果你想解压缩它以获得它的组成者类型,或者只是采取功能签名而不是其他类型,你必须做更多的工作。类似traits类的东西“是签名”和帮助器提取arg计数,返回值和参数(可能作为元组类型)。
它不会像专业化案例那样起作用。