I\'m trying to compile the following code with GCC 4.7.2:
#include
int foo() {
static int bar;
return [&b
Why are you even trying to capture bar
? It's static. You don't need to capture it at all. Only automatic variables need capturing. Clang throws a hard error on your code, not just a warning. And if you simply remove the &bar
from your lambda capture, then the code works perfectly.
#include
int foo() {
static int bar;
return [] () { return bar++; } (); // lambda capturing by reference
}
int main (int argc, char* argv[]) {
std::cout << foo() << std::endl;
std::cout << foo() << std::endl;
std::cout << foo() << std::endl;
return 0;
}
prints
0
1
2