【发布时间】:2015-10-07 03:31:43
【问题描述】:
#include <iostream>
#include <functional>
using namespace std;
function<int(int)> wrapper(function<void(int)> f)
{
auto ff = [&](int a) {
cout << "in wrapper " << a << endl;
f(a);
return 1;
};
return ff;
}
int main()
{
auto fa = wrapper([](int a){
cout << "in fa " << a << endl;
});
fa(999);
wrapper([&fa](int b){
cout << "in anon " << b << endl;
fa(998);
})(997);
}
上面的代码会打印出来
in wrapper 999
in fa 999
in wrapper 997
in anon 997
in wrapper 998
in anon 998
in wrapper 998
in anon 998
in wrapper 998
in anon 998
in wrapper 998
in anon 998
in wrapper 998
in anon 998
in wrapper 998
in anon 998
..........
直到分段错误。
我用javascript写同样的代码
function wrapper(f)
{
var ff = function(a) {
console.log("in wrapper %s", a);
f(a);
return 1;
};
return ff;
}
(function ()
{
var fa = wrapper(function(a){
console.log("in fa %s", a);
});
fa(999);
wrapper(function(b){
console.log("in anon %s", b);
fa(998);
})(997);
})();
它会打印出来
in wrapper 999
in fa 999
in wrapper 997
in anon 997
in wrapper 998
in fa 998
c++ lambda 代码有什么用? 我尝试了 g++-5.0 和 g++4.9 编译器。一切都以这个错误告终。
【问题讨论】:
标签: c++ c++11 lambda functional-programming