带有方法签名的模板函数

时间:2016-02-20 16:44:20

标签: c++ templates

我知道有可能实现这样的目标:

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;不包含在任何类或其他结构中),它将函数签名作为模板参数。

1 个答案:

答案 0 :(得分:0)

功能签名只是一种类型。所以你可以毫无疑问。

如果你想解压缩它以获得它的组成者类型,或者只是采取功能签名而不是其他类型,你必须做更多的工作。类似traits类的东西“是签名”和帮助器提取arg计数,返回值和参数(可能作为元组类型)。

它不会像专业化案例那样起作用。