Hello:
Here is the c++ lambda code I test:
#include <iostream>
#include <functional>
using namespace std;
function<int(int)> doSome()
{
int x = 10;
auto f = [&x](int y) {
x = x + y;
return x; //since x is a local variable, it will be free when leaving
doSome
};
return f;
//return [x](int y) { return x+y; };
}
int main()
{
function<int(int)> func = doSome();
int first_call = func(10);
int second_call = func(10);
cout << first_call << '\n';
cout << second_call << '\n';
system("pause");
}
As you can see, if I run the code on my host pc using gcc or clang
compiler, the output will occur error like this:
<https://lh3.googleusercontent.com/-Ek2GE7qwu54/U-uDuhBxHvI/AAAAAAAAAWE/MuwCaHrByY0/s1600/test.png>
However, if I compile to Asm.js. It works and the results show that it
behaves like a closure function.
<https://lh3.googleusercontent.com/-Qgynh9Ukn94/U-uGBetO-0I/AAAAAAAAAWQ/k9qN5paPWKI/s1600/22.png>
Is this a normal situation or is there any potential danger if I were to
use lambda function in c++ then compile to Asm.js ?
Thank you.
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.