On 2013-08-10, 14:58, JS wrote:

e.g.,

interface A
{
     static T A(T)() { ... }
}

can be used as A!T instead of A.A!T. Same for classes and structs. If you want a use case I'm not going to stop you from coming up with one... so feel free.

Tried with DMD 2.063.2, and I'm unable to make A!T compile. Are you sure
you've written the code you intended to?

For reference, this is the code I tried:

interface A {
    static T A(T)() {
        return T.init;
    }
}

void main() {
A!int a; // Error: template instance A!(int) A is not a template declaration, it is a interface auto b = A!int; // Error: template instance A!(int) A is not a template declaration, it is a interface
}

This code, of course, works:

template A(T) {
    interface A {
    }
}

void main() {
    A!int a;
}

Reply via email to