rubricanis
Homo ludens
Wenn ich das recht verstehe bedeutet [&](){...} in einem Lambda Ausdruck dass die umgebende Variablen referenziert werden. Bei folgendem bekomme ich aber konstant 5 x 32568 und nicht wie erwartet 1...5.
Was mache/denke ich hier falsch?
Peter
Code:
#include <iostream>
#include <functional>
using namespace std;
function<int()> makeCounter(){
int x = 0;
return [&](){return ++x;};
}
int main(int argc, const char* argv[]){
auto counter = makeCounter();
for(int i = 0; i < 5;++i)
cout << "value = " << counter() << endl;
}
Was mache/denke ich hier falsch?
Peter