Opened 4 years ago
#209 new defect
Mutable reference to constant is not forbidden
Reported by: | mlbrooks | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | cfa-cc |
Version: | 1.0 | Keywords: | |
Cc: |
Description
void fred( int & i) { printf("fred got: %d\n", i); i = 4; printf("fred left: %d\n", i); } int produce() { return 17; } int main() { const int i = 3; printf("main a: %d\n", i); fred( i ); // unsound printf("main b: %d\n", i); // i is changed! // we soundly allow a mutable reference to a temporary fred( produce() ); }
Actual: Compile succeeds, run prints:
main a: 3 fred got: 3 fred left: 4 main b: 4 fred got: 17 fred left: 4
Expected (minimal fix): Compile error, cannot get mutable reference to const i at "unsound" line
Further candidate feature request: Compile succeeds, run prints:
main a: 3 fred got: 3 fred left: 4 main b: 3 fred got: 17 fred left: 4
This bug was discovered during discssions about #189 and the 189 fix is not addressing this case.
Note: See
TracTickets for help on using
tickets.