我一直在寻找答案几个小时,但我没有找到任何东西......所以,这是我的问题:
template<typename Signature> struct wrapper; // (1)
template<typename Ret, typename... Args>
struct wrapper<Ret(Args...)> // (2)
{
function static get(Ret(*fnc)(Args...), Args... args)
{
return function(/*some more stuff here that work*/);
}
}
基本上,这段代码提取函数的返回类型和参数并返回一个通用函数容器。此代码使用简单的功能。但后来我尝试使用 lambdas。如果没有这个包装器(通过手写完整的原型),代码就可以工作,我可以调用 lambda。但是当我将这个包装器与 lambda 函数一起使用时,我得到了一些
'./some-file.cpp:xy:z: 错误:不完整的类型 'wrapper >' 用于嵌套名称说明符'
错误是由 (1) 和 (2) 两点引起的,因为 lambda 无法放入函数指针?我正在寻找一种将 lambda 的参数类型放入模板参数包的方法(返回类型并不重要,我所有的 lambda 都不返回值(所以它是无效的))提前感谢您的帮助:)