I am new to templates and lambdas function and I am trying to understand what's happening in this piece of code:
function<void (const int &)> foo = [&](auto x) {
x = 42;
}
Here, I assume the compiler is able to tell from the auto
keyword that x
has type const int &
. Therefore, the compiler should not allow the assignment x = 42
.
However, this code compiles without error, which confuses me. Why does the compiler allow this? What did the compiler actually deduced for the auto
keyword?
Aucun commentaire:
Enregistrer un commentaire