Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将lambda参数类型获取到模板参数包中_C++_Lambda_C++11_Variadic Templates - Fatal编程技术网

C++ 将lambda参数类型获取到模板参数包中

C++ 将lambda参数类型获取到模板参数包中,c++,lambda,c++11,variadic-templates,C++,Lambda,C++11,Variadic Templates,我已经找了几个小时的答案,但我什么也没找到。。。 所以,我的问题是: template<typename Signature> struct wrapper; // (1) template<typename Ret, typename... Args> struct wrapper<Ret(Args...)> // (2) { function static get(Ret(*fnc)(Args...), Args... args) { r

我已经找了几个小时的答案,但我什么也没找到。。。 所以,我的问题是:

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*/);
  }
}
模板结构包装器;//(1)
模板
结构包装器//(2)
{
函数静态获取(Ret(*fnc)(参数…,参数…)
{
返回函数(/*这里还有一些有用的东西*/);
}
}
基本上,这段代码提取函数的返回类型和参数,并返回通用函数容器。这段代码使用简单的函数。 但后来我试着用lambdas。 没有这个包装器(通过手写完整的原型),代码就可以工作,我可以调用lambda。 但是当我将这个包装器与lambda函数一起使用时,我得到了一些

'./some file.cpp:xy:z:错误:嵌套名称说明符中使用的类型“wrapper>”不完整

错误是由两点(1)和(2)引起的,因为lambda不能装入函数指针吗? 我正在寻找一种将lambda的参数类型放入模板参数包的方法(返回类型并不重要,我所有的lambda都不返回值(所以它是空的)) 提前感谢您的帮助:)

看起来您只声明了
包装器
结构,实际上并没有定义它

尝试正确定义结构:

template<typename Signature> struct wrapper {};
模板结构包装器{};

您能发布完整的错误消息吗?这是完整的错误消息;)您使用的编译器的版本是什么?gcc(Gentoo 4.5.3-r2 p1.1,pie-0.4.7)4.5.3(是的,lambda函数可以工作)我不认为可变模板可以(无论如何都不正确)。。。您应该在GCC4.7+上进行尝试。有了这一行,它只会移动错误。我得到一个./x.cpp:x:x:error:'get'不是'wrapper'的成员(这是唯一一行)。我的专业似乎与lambda函数不匹配。