alias this with template class?

Namespace rswhite4 at googlemail.com
Sun Jun 3 14:56:08 PDT 2012


Fail.
Ok, i tried something like this:
[code]
import std.stdio;

mixin template TConvertTo(T : Object,  U) {
	T!(U) ConvertTo() inout {
		return cast(T!U) this;
	}
	
	alias ConvertTo this;
}

class Foo(T) {
public:
	T Num;
	
	mixin TConvertTo!(typeof(this), float);
	
}
[/code]

but it fails with:
template_alias_this_cast.d(4): Error: template instance T!(float) 
T is not a template declaration, it is a class
template_alias_this_cast.d(4): Error: T!(float) is used as a type
template_alias_this_cast.d(15): Error: mixin 
template_alias_this_cast.Foo!(float).Foo.TConvertTo!(Foo,float) 
error instantiating
template_alias_this_cast.d(19): Error: template instance 
template_alias_this_cast.Foo!(float) error instantiating

If i change it to:
[code]
import std.stdio;

mixin template TConvertTo(V) {
	Foo!(V) ConvertTo() inout {
		return cast(Foo!V) this;
	}
	
	alias ConvertTo this;
}

class Foo(T) {
public:
	T Num;
	
	mixin TConvertTo!(float);
	
}
[/code]

it works. But i think my first idea should work, too.


More information about the Digitalmars-d-learn mailing list