I'm new to C++. I was messing around with lambdas and gcc compiler threw an error. Can someone kindly explain why it's happening?
Compilable code:
int main() {
int abc= 456;
int* abc_ptr= &abc;
auto lambda= [abc_ptr]() { *abc_ptr= 123; }; // Works fine
lambda();
}
This does not work however:
int main() {
int abc= 456;
int* abc_ptr= &abc;
void (*lambda)()= [abc_ptr]() { *abc_ptr= 123; }; // error: cannot convert 'main()::<lambda()>' to 'void (*)()' in initializationx86-64 gcc 11.2 #1
lambda();
}