Opened 5 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.