The Status of Const
Steven Schveighoffer
schveiguy at yahoo.com
Fri Aug 13 06:59:39 PDT 2010
On Thu, 12 Aug 2010 22:09:51 -0400, Michel Fortin
<michel.fortin at michelf.com> wrote:
> On 2010-08-12 18:56:50 -0400, dsimcha <dsimcha at yahoo.com> said:
>
>> How can these limitations be worked around and/or fixed?
>
> Unsatisfaction about Rebindable seems pretty generalized.
>
> Here's an idea for a solution. Basically the problem is only in the
> syntax, where the reference is implicitly part of the object's type and
> thus impossible to put outside from the type modifier. An easy solution
> would be to add an explicit reference marker, but this would change the
> syntax for existing code, and I have to admit the current syntax is nice
> (up until you try to add a modifier). But we could make the reference
> marker optional, like this:
>
> Object o; // implicitly a reference
> Object ref o; // explicit reference marker
>
> Both would be allowed and equivalent. While the first form is nicer to
> the eye, the second makes it easy to apply a type modifier while
> excluding the reference:
>
> const(Object)ref o;
> shared(Object)ref o;
I really really like this idea. I remember seeing a suggestion like this
a long time ago, but I think it was ref const(Object). That is ambiguous
because you could have a ref to an object ref. With your idea, I think
this would be ref const(Object) ref (a little ugly, but no worse than
const const(Object) fn()).
I like how it reads naturally. I think it's also syntactically
unambiguous. Walter, please give this one some attention, I'd love to see
this fixed.
-Steve
More information about the Digitalmars-d
mailing list