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.

Reply via email to