我几个小时都在寻找答案,但我没找到任何东西...... 所以,这是我的问题:
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&gt;'用于嵌套名称说明符'
错误是由两点(1)和(2)引起的,因为lambda不能适合函数指针吗? 我正在寻找一种方法将lambda的参数类型转换为模板参数包(返回类型并不重要,我的所有lambda都没有返回值(所以它是无效的)) 在此先感谢您的帮助:)
答案 0 :(得分:-1)
您似乎只声明 wrapper
结构,实际上定义它。
尝试正确定义结构:
template<typename Signature> struct wrapper {};