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