Transitive const sucks

Bruce Adams tortoise_74 at ya.blah.hoo.co.ok
Wed Sep 12 00:52:12 PDT 2007


Bruno Medeiros Wrote:

> Sean Kelly wrote:
> > read operations.  But for better or worse, D const has a different aim. 
> >  The goal is largely to produce a system which allows for compiler 
> > optimization rather than to enforce some sort of logical restrictions on 
> > behavior.  I suspect this means that D apps won't look very much like 
> > C++ apps in terms of how const is used, and the overall utility for the 
> > average programmer may well be somewhat small.
> > 
> > 
> > Sean
> 
> I'm don't think that's entirely true. 'invariant' the keyword is indeed 
> made to allow several compiler and program optimizations, but 'const' 
> the keyword is really for enforcing program contracts and restrictions, 
> thus improving safety. I don't even think 'const' the keyword has any 
> use whatsoever for optimization.
> 
> 
> -- 
> Bruno Medeiros - MSc in CS/E student
> http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D

Since you mention contracts,  one idea I had for a way out of this
morass was to use them for enforcing type constraints like const.
e.g.

const int* foo;

is sort of equivalent to:

int* foo;
static assert((*foo).const == true);

The idea needs a bit of work obviously.

Bruce.



More information about the Digitalmars-d mailing list