Steven Schveighoffer wrote:
"Andrei Alexandrescu" wrote
Is there a way to have variable reference to constant data in D?  I
just don't see it at the moment and it would be _really_ useful.
http://www.digitalmars.com/d/2.0/phobos/std_typecons.html#Rebindable

Small question regarding Rebindable that I've been meaning to ask.

Does implicit assignment to a const(T) work, or does that require opImplicitCast? This would be useful not only for assignment, but also passing to functions which take const(T) instead of Rebindable!(T).

I think we'd need compiler support for opImplicitCast indeed.

Also, one other thing. A Rebindable!(T) only makes sense if T is const or invariant, but this is rather long winded:

Rebindable!(const(A)) a;

Would it make sense to have shortcuts to Rebindable that automatically apply const or invariant? something like:

template tconst(T)
{
   alias Rebindable!(const(T)) tconst;
}

Using whatever you think is best for a symbol name. Just something a little shorter.

Better yet (or in addition to), we could make it a function so argument deduction takes care of everything.

Rebindable!(const T) tailconst(const T r);
Rebindable!(immutable T) tailimmutable(const T r);

auto w = new Widget;
auto w1 = tailconst(w);
w1 = tailconst(new Widget);


Andrei

Reply via email to