On Monday, 21 October 2013 at 15:00:26 UTC, Dicebot wrote:
On Monday, 21 October 2013 at 12:58:55 UTC, 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

I think this is a good match for a gold collection of "awkward mismatch of template alias vs normal alias". I am quite surprised former template work actually, aliases are not supposed to handle expressions at all. But magic of template alias parameter turns expression into symbol and here we go.

I didn't know the B template would work... Is this correct semantics according to the spec?

Reply via email to