On 10/21/2013 02:58 PM, John Colvin wrote:
I suspect I'm being very dumb here, but I can't get my head around this:

     template B(alias A)
     {
     alias B = A;
     }
     template C(A ...)
     {
     alias C = A[0];
     }
     static assert(B!1 == 1); //fine
     static assert(C!1 == 1); //Error: cannot alias an expression 1

It is awkward design. I think it should just work. In case you needed to this for anything, the following works:

template ID(alias a){ alias ID = a; } // "identity function on symbols"

template B(alias A){
    alias B = A;
}
template C(A ...){
    alias C = ID!(A[0]);
}
static assert(B!1 == 1); // fine
static assert(C!1 == 1); // fine

Reply via email to