On Friday, 28 March 2014 at 22:39:24 UTC, Timon Gehr wrote:
You mean because the literal is accepted as an alias argument?
Alias template arguments are not actually the same thing as
alias declarations. (Eg. the latter can accept built-in types
like 'int', while the former will not, but otherwise allow
arbitrary expressions.) I used to think this was a bug, but
Walter stated that this is in fact by design. (I think this is
a gratuitous design mistake.)
The expressions that are used in alias declarations are 'a' and
'Id!(a=>a)'. Both of those can occur in a context where they
denote types.
I'm confused now. What exactly was it that you were saying didn't
make sense?