When I write a lambda definition with the following signature:
auto lambda = [&] (auto i){
};
I get the following compiler error:
error: 'auto' not allowed in lambda parameter
When I change the type from auto
to int
, the error disappears.
I am not sure why the compiler can deduce the type of a lambda, but not its parameter type, which should be known to it at the time of the invocation of the lambda?
I am trying to understand the reasoning behind this restriction.
I am not sure why the compiler can deduce the type of a lambda, but not its parameter type, which should be known to it at the time of the invocation of the lambda?
It can, but only since C++14.
auto lambda = [&] (auto i) { };
This code is perfectly legal since C++14 and called generic lambda.
Unfortunately, generic lambdas are not available before C++14, so, if you need to use them, C++14 support is required.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With