【发布时间】:2016-07-29 16:00:27
【问题描述】:
我正在尝试编写代码来执行与此类似的操作(为演示目的编写的代码):
template <typename F, typename Args...>
inline auto runFunc(F func) -> foo
{
return foo([func](Args... args) -> std::result_of<F>::type
{
// Do something before calling func
func(args...);
// Do something after call func
});
}
所以基本上我正在尝试编写一个函数,该函数返回一个对象,该对象接受与模板化函数类型匹配的 lambda。显然这段代码不起作用,因为我没有定义 Args...。我将如何在 C++11 中解决这个问题?
【问题讨论】:
-
你能提供更多关于你想要做什么的背景吗?
-
-> foo在runFunc(F func)之后没有任何意义。试试decltype(foo([func](Args... args)...)) -
什么是
foo()?你只是想装饰func吗? -
哦
foo是一个班级吗? -
foo 在这个例子中是一个类。 @templateypedef:基本上我创建了一个包含函子的任务对象(无论它是 std::function、lambda 还是其他任何东西)。但是,我希望将该函数包装在 lambda 中以做额外的工作,但让该 lambda 能够将参数转发给该函子。
标签: c++ c++11 variadic-templates