On Wed, Jan 25, 2012 at 11:50:57PM +0100, Timon Gehr wrote:
> On 01/25/2012 02:29 AM, H. S. Teoh wrote:
[...]
> >But since Walter doesn't like the idea of restricting the syntax to 'int
> >y() const', then what about making it mandatory to write:
> >
> >     const(int) x;
> >
> >instead of:
> >
> >     const int x;
> >
> >?
> 
> You essentially propose to remove the const/immutable/shared/inout
> storage classes for variables. It would break almost every D program
> and I don't see many benefits.
[...]
> It is very simple. What may be confusing you is that
> const/immutable/shared/inout are both type constructors and storage
> classes.
[...]

Ah, I see. This is very helpful.

So what's the difference between a const int type, and an int variable
with const storage class?

I think this is the key issue. The syntax makes this distinction
non-obvious, IMHO, which is very confusing. This ambiguity also shows up
in function definitions (allowing storage classes to appear left or
right of the function name/parameters), which we discussed earlier. From
what I can tell, Walter doesn't want to change this, but I have to say
that this is one part of D I find unnecessarily confusing.


T

-- 
Do not reason with the unreasonable; you lose by definition.

Reply via email to