digitalmars.D.learn - aliases and templates
- Trass3r (16/16) Jan 22 2009 I already read about "Implicit Template Properties":
- Jarrett Billingsley (2/18) Jan 22 2009 Aliases are members too.
- ws (3/21) Jan 23 2009 Without the alias you will be declaring a variable.
I already read about "Implicit Template Properties":
If a template has exactly one member in it, and the name of that member
is the same as the template name, that member is assumed to be referred
to in a template instantiation
I guess the following is something similar, but why are aliases used here?
template ParameterTypeTuple(dg)
{
static if (is(dg P == function))
alias P ParameterTypeTuple;
else static if (is(dg P == delegate))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else static if (is(dg P == P*))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else
static assert(0, "argument has no parameters");
}
Jan 22 2009
On Thu, Jan 22, 2009 at 10:56 AM, Trass3r <mrmocool gmx.de> wrote:
I already read about "Implicit Template Properties":
If a template has exactly one member in it, and the name of that member is
the same as the template name, that member is assumed to be referred to in a
template instantiation
I guess the following is something similar, but why are aliases used here?
template ParameterTypeTuple(dg)
{
static if (is(dg P == function))
alias P ParameterTypeTuple;
else static if (is(dg P == delegate))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else static if (is(dg P == P*))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else
static assert(0, "argument has no parameters");
}
Aliases are members too.
Jan 22 2009
Trass3r Wrote:
I already read about "Implicit Template Properties":
If a template has exactly one member in it, and the name of that member
is the same as the template name, that member is assumed to be referred
to in a template instantiation
I guess the following is something similar, but why are aliases used here?
template ParameterTypeTuple(dg)
{
static if (is(dg P == function))
alias P ParameterTypeTuple;
else static if (is(dg P == delegate))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else static if (is(dg P == P*))
alias ParameterTypeTuple!(P) ParameterTypeTuple;
else
static assert(0, "argument has no parameters");
}
Without the alias you will be declaring a variable.
With it you are aliasing a type.
Jan 23 2009









Jarrett Billingsley <jarrett.billingsley gmail.com> 