On Sun, 12 Feb 2012 15:44:22 -0500, Walter Bright
<newshou...@digitalmars.com> wrote:
On 2/12/2012 11:27 AM, Timon Gehr wrote:
alias int I; // OK
template T(alias I){}
mixin T!int; // NG
Is there any reason why we should not get rid of this inconsistency as
fast as
possible? What does not accepting basic types as template alias
parameters buy
anyone?
alias parameters accept symbols. Keywords are not symbols. To pass a
type, just use template T(I).
Yeah, but types can be keywords, and types can be symbols. There are good
use cases to being able to alias int in a template.
This works:
// would have used typedef, but typedef is deprecated...
struct S
{
int ___val;
alias ___val this;
}
template T(alias I) {}
mixin T!S;
I don't see the reason to present such an obstacle.
You could ease the restriction to "you can alias only symbols or keywords
that could be aliased to symbols".
-Steve