Template question about alias
Jarrett Billingsley
kb3ctd2 at yahoo.com
Sat Mar 22 18:06:37 PDT 2008
"Edward Diener" <eddielee_no_spam_here at tropicsoft.com> wrote in message
news:fs4a59$2e5v$1 at digitalmars.com...
> 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
> 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;' to
> represent an alias automatically, since it would save endlessly having to
> type 'alias' for a syntax which could not be anything else ?
template MyTemplate(T)
{
alias T MyTemplate;
}
MyTemplate!(int) aname; // legal, typeof(aname) is int
alias MyTemplate!(int) foo; // legal, foo is int
foo bar; // bar is int
In this case, the template is being used as a type.
It's not legal _in some cases_. It is in others. It requires semantic
analysis to know whether it is or not, so it's not something that can be
restricted by syntax.
More information about the Digitalmars-d
mailing list