Home > Article > Backend Development > Why Can\'t Non-Const References Bind to Lvalues of Different Types in C ?
Binding Non-Const References to Lvalues of Different Types
In C , a non-const lvalue reference (&) cannot be bound to an lvalue of a different type, as demonstrated by the example below:
int a; double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type
This is because the non-const reference m attempts to bind to a temporary object created during the assignment. Non-const references cannot bind to temporaries.
However, consider the following example:
const double &m = a; // Valid
In this case, the const reference m is binding to a non-const lvalue, and the conversion from int to double is allowed. This is because the const reference protects the underlying value from being modified, eliminating the potential for data corruption that could arise from binding a non-const reference to a temporary.
Therefore, when you attempt to bind a non-const reference to an lvalue of a different type, an error will occur due to the inability of non-const references to bind to temporaries.
The above is the detailed content of Why Can\'t Non-Const References Bind to Lvalues of Different Types in C ?. For more information, please follow other related articles on the PHP Chinese website!