Template
Regan Heath
regan at netmail.co.nz
Thu Aug 9 02:17:48 PDT 2007
Vladimir wrote:
> I tried to use common c++ technique in D:
>
> class Super (alias T)
> {
> alias T.Type A; >>> Error: no property 'Type' for type xxx.Sub'
>
> void test()
> {
> alias T.Type B; >>> ok
> }
> }
>
> class Sub : Super !(Sub)
> {
> alias int Type;
> }
>
> alias A fails to compile although alias B inside scope of function is ok. Is that intended? What is the idea behind that?
I suspect it must have something to do with 'Sub' not being defined at
the point where you're using it as a template parameter.
This compiles:
class Super (T)
{
alias T.Type A;
void test()
{
alias T.Type B;
}
}
class Temp
{
alias int Type;
}
class Sub : Super !(Temp)
{
alias int Type;
}
void main() {}
Incidently, notice that I'm not using 'alias' in my Super template. It
doesn't seem to be required.
Regan
More information about the Digitalmars-d-learn
mailing list