1

我一直在寻找答案几个小时,但我没有找到任何东西......所以,这是我的问题:

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 都不返回值(所以它是无效的))提前感谢您的帮助:)

4

1 回答 1

-1

似乎您只声明wrapper结构,实际上并没有定义它。

尝试正确定义结构:

template<typename Signature> struct wrapper {};
于 2012-06-15T05:57:28.543 回答