C++ lambda type conversion?

Viewed 78

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();
}

0 Answers
Related