On Wednesday, 24 July 2013 at 10:01:14 UTC, bearophile wrote:
dennis luehring:

and how would it look to preserve the const if auto would auto-rip it of?

You could write:

immutable j = n;

For every default behavour you need a way to implement the other nicely :-)

Currently for the problem of the OP you can use this:

Unqual!(typeof(n)) j = n;

Bye,
bearophile

Definitly. Auto means "same type". I think it could be OK if it followed IFTI rules? After all, in concept, it's kind of the same mechanism.

I wouldn't go any further than that though.

//----
void foo(T)(T t)
{
    pragma(msg, T.stringof);
}

void main(string[] args)
{
    immutable int[] i = [1, 2, 3];
    foo(i);
    auto j = i;
    pragma(msg, typeof(j).stringof);
}
//----
immutable(int)[]
immutable(int[])
//----

Problem: I don't really see a good usecase for making auto have special IFTI behavior. Keeping it to "same type, 100% of the time" seems like the best.

Reply via email to