I noticed that assigning a char to a const int& compiles, but assigning it to a int& gives a compilation error.
char c;
int& x = c; // this fails to compile
const int& y = c; // this is ok
I understand that it is not a good practice to do this, but I am curious to know the reason why it happens.
I have searched for an answer by looking for “assigning to reference of different type”, “assigning char to a int reference”, and “difference between const reference and non-const reference”, and came across a number of useful posts (int vs const int& , Weird behaviour when assigning a char to a int variable , Convert char to int in C and C++ , Difference between reference and const reference as function parameter?), but they do not seem to be addressing my question.
My apologies if this has been already answered before.
Here an implicit conversion from
chartointis being performed by the compiler. The resulting temporaryintcan only be bound to aconstreference. Binding to aconst int&will also extend the lifetime of the temporary result to match that of the reference it is bound to.