On 29 June 2006 14:44, Richard Guenther wrote: > But with C language constructs you cannot assume that an object > passed to a function via a const pointer is not modified. So, there > is no real "const" regarding to objects pointed to. Consider > > void foo(const int *i) > { > int *k = (int *)i; > *k = 0; > } > int bar(void) > { > int i = 1; > foo(&i); > return i; > } > > should return 0, not 1.
That's cheating! You casted away const, it's a blatant aliasing violation, you deserve everything you get. The compiler is specifically *allowed* to assume you don't pull stunts like this *in order to* make const-optimisation possible and useful. cheers, DaveK -- Can't think of a witty .sigline today....