I think this should work:
[code]
import std.stdio;
class Foo(T) {
public:
	T Num;
	
	@property
	Foo!(U) ConvertTo(U)() inout {
		return cast(Foo!(U)) this;
	}
	
	alias ConvertTo this;
}
void Call(const Foo!(float) FFoo) {
}
void main() {
	Foo!(ubyte) UbFoo = new Foo!(ubyte)();
	
	Call(UbFoo);
	
	readln();
}
[/code]
Why it doesn't?