如何获取可变参数模板类中函数指针的参数类型?
这是此问题的后续内容: 具有任何参数的函数的通用函子list
我有这个函子类(完整代码请参阅上面的链接):
template<typename... ARGS>
class Foo
{
std::function<void(ARGS...)> m_f;
public:
Foo(std::function<void(ARGS...)> f) : m_f(f) {}
void operator()(ARGS... args) const { m_f(args...); }
};
在 operator()
中,我可以通过递归轻松访问 args...
Stroustrup 的 C++11 常见问题解答中描述的“剥离”功能
我的问题是:我想在构造函数中访问 f 的参数类型,即 ARGS...
。显然我无法访问值,因为到目前为止还没有值,但参数类型列表以某种方式隐藏在 f
中,不是吗?
This is a follow up of this problem: Generic functor for functions with any argument list
I have this functor class (full code see link above):
template<typename... ARGS>
class Foo
{
std::function<void(ARGS...)> m_f;
public:
Foo(std::function<void(ARGS...)> f) : m_f(f) {}
void operator()(ARGS... args) const { m_f(args...); }
};
In operator()
I can access the args...
easily with a recursive "peeling" function as described in Stroustrup's C++11 FAQ
My problem is: I want to access the types of the arguments of f, i.e. ARGS...
, in the constructor. Obviously I can't access values because there are none so far, but the argument type list is somehow burried in f
, isn't it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以如下所示编写
function_traits
类,以发现参数类型、返回类型和参数数量:测试代码:
演示:http://ideone.com/YeN29
You can write
function_traits
class as shown below, to discover the argument types, return type, and number of arguments:Test code:
Demo : http://ideone.com/YeN29