我想知道什麼是下面介紹的拉姆達正確的類型定義,因此,下面的代碼將編譯使用兼容標準的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