const?? When and why? This is ugly!

BCS none at anon.com
Sun Mar 1 22:03:23 PST 2009


Hello hasen,

> I haven't been following D for over a year .. now I notice there's a
> const!!
> 
[...]
> 
> This is annoying because now const propagates like a virus!

Yes const is viral (that can't be avoided)

> This whole stupid process wouldn't even be needed in the first place
> if C++ had a garbage collector, because then I would always "new" them
> (as per Java, C#, and D)
> 
> SomeType *obj = new SomeType();
> 
> but because there's no garbage collector, I have to create the object
> not as a reference.
> 
> SomeType obj();
> 
> Again, this is all stupid C++ stuff that shouldn't even be needed in
> the first place.
> 

IIRC const has exactly zero to do with new/reference/value stuff. It is totaly 
about knowing if somthing will get changed out from under you. This is needed 
to make unsable large scale libraries. And has a HUGE impact on parallel 
code.

> However, with all that being said, that's just my opinion, maybe over
> the time some people found some actually useful uses for const, great,
> so they can use it if they want.
> 
[...]
> 
> char[] p = "world"; // error, cannot implicitly convert invariant
> // to mutable
> and all I can think of is: WHAT - THE - HELL??!!!!!!

That's totally correct. On linux under D1.0 (that would work BTW) if you 
then try to alter p you get an access violation. String literals can't be 
modified and that what const/invariant says.





More information about the Digitalmars-d mailing list