Template question about alias

Edward Diener eddielee_no_spam_here at tropicsoft.com
Sat Mar 22 18:28:19 PDT 2008


Bill Baxter wrote:
> Edward Diener wrote:
>> Another D template question.
>>
>> I am assuming that one can not create a variable which refers to a 
>> template instance, but one can create an "alias" for a template 
>> instance, ie.
>>
>> template MyTemplate(T) { T data; /* other decldefs ... */};
>> MyTemplate!(int) aname; // illegal
> 
> This looks like the declaration of a class template instantiated for 
> int.  So I'm glad that doesn't create an alias.  It would be very 
> confusing.
> 
>> alias MyTemplate!(int) aname; // legal
>>
>> Is this correct ? If it is so, why did D not just scrap the use of 
>> 'alias' in this case and allow the first form, 'MyTemplate!(int) aname;' 
> 
> Because 'alias' is how you create type aliases in D.  I don't get why 
> you'd view dispensening of the 'alias' there a benefit.

If the first syntax was normally illegal, then having to type alias 
would be redundant if the first syntax were to be automatically 
considered an alias and be made legal. However I am told by another 
replier that the first syntax can sometimes be considered legal.



More information about the Digitalmars-d mailing list