On 22 January 2012 20:36, Alex Rønne Petersen <xtzgzorex@gmail.com> wrote:
On 22-01-2012 19:33, Andrej Mitrovic wrote:
A while ago there was a suggestion by Andrei to incorporate this sort of syntax:

template ElementType(T : T[])
{

   alias ElementType = T;
}

struct Foo(T)
{
    alias Type = T;
}

I think people agreed it was a nice syntax, but I don't know if anyone
tried to implement it.

It still feels wrong. Why am I overwriting an existing symbol?

Was it me that raised this on IRC? I've also been discussing it on IRC the last few days, and it is very confusing.
I can write code that works now, but I still for the life of me find coherent logic for the syntax in my head, and whether I'm aliasing something, or producing a constant using enum... one way I'm producing a type, the other way I'm producing a value. The same syntax can produce this disconnected result; feels very unnatural to me. Types and values feel like totally different things in my mind, perhaps this is my error?

I think the problem for me is that I can't see clearly exactly what a template actually does, it feels like there's some magic involved, mainly in the result syntax, that makes it work somehow...