我想知道什么是下面介绍的拉姆达正确的类型定义,因此,下面的代码将编译使用兼容标准的C++编译器11:C++ 11的λ和模板专业化
#include <cstdio>
#include <string>
template<class Func>
class foo
{
public:
foo(Func func)
: fum(func){}
Func fum;
};
int main()
{
foo<???> fi([](int i) -> bool { printf("%d",i); return true; });
fi.fum(2);
return 0;
}
我想另一个方式,它可以做的是,像这样:
template<typename Func>
foo<Func> make_foo(Func f)
{
return foo<Func>(f);
}
int main()
{
auto fi = make([](int i) -> bool { printf("%d",i); return true; });
fi.fum(2);
return 0;
}
原始函数指针提示工作很好thanx!+1 – 2011-12-16 00:57:08
顺便说一句如果我要通过引用'[&]'捕获所有内容,它会是什么样子? – 2011-12-16 01:01:35