What guarantees does D 'const' provide, compared to C++?
Jonathan M Davis
jmdavisProg at gmx.com
Thu Aug 16 19:02:40 PDT 2012
On Friday, August 17, 2012 03:51:36 Mehrdad wrote:
> On Friday, 17 August 2012 at 01:33:29 UTC, Chris Cain wrote:
> > Also, if the only view of the data you have is that const view,
> > it's effectively the same as immutable (it couldn't be changed
> > by any valid code).
>
> So you're saying casting away a const _pointer_ is undefined,
> even if the target was originally created as mutable. (Otherwise,
> the code would certainly be "valid", just like in C++.)
>
>
> Which means you can effectively _never_ cast away constness of a
> pointer/reference, no matter how certain you are about the target
> object, right?
>
> If you did, then the code would be invalid, and the compiler
> could simply format your C: drive instead of modifying the object.
>
> If so, then why is such an undefined cast allowed in the first
> place?
Because there are plenty of functions which take mutable objects but don't
actually alter them - particularly when interacting with C code. It's the sort
of thing that you really shouldn't be doing normally but on rare occasions is
useful - in this case when dealing with code that isn't const correct but
still won't actually alter the object.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list