On Sunday, February 16, 2014 06:55:36 Stanislav Blinov wrote: > On Sunday, 16 February 2014 at 06:28:45 UTC, Jonathan M Davis > > wrote: > > On Sunday, February 16, 2014 03:25:08 Stanislav Blinov wrote: > >> On Saturday, 15 February 2014 at 04:03:51 UTC, Adam D. Ruppe > >> wrote: > >> > >> What about a library solution for something like C++-esque > >> mutable? > > > > You're casting away const if you do that, and that's precisely > > what you shouldn't be doing. const is for _physical_ constness > > and should never be used if you want logical constness... > > I hear you. In this case, one might ask why casting away const is > allowed at all :)
Primarily for cases where you have to pass a const object to a function which has mutable parameters, and you know that it's not going to mutate its parameters - that and the fact that D is a systems language, so it will let you blow off your foot if you really try. It _is_ possible to mutate a const object without breaking code, but you have to know exactly what you're doing, and it's very, very risky such that it's pretty much always a bad idea. But if you really want to try blowing your foot off, D will let you. It just protects you such that you can't do it without trying (e.g. by casting away const). - Jonathan M Davis