digitalmars.D.learn - template subclass as template parameter
- Ivo Jimenez (24/24) Aug 11 2010 Hi,
- BCS (8/19) Aug 11 2010 The way you have it is asking for an exact match. I would have to look i...
Hi,
I'm new to D. I have the following:
class A(T) { ... }
class B(T) : A!(T) { ... }
class C(T, U : A!(T)) { ... }
And I'm trying to do this
void main()
{
C!(double, B!(double)) var;
}
but dmd complains:
Error: template instance C!(double,B) does not match template declaration
C(T,U : A!(T))
If I change the line of main() by
void main()
{
C!(double, A!(double)) var;
}
it works OK. Does the fact that B(T) is a child of A(T) imply that I can use
B(T) as a template parameter wherever A(T) is expected?
Could you please point to where I'm doing things wrong. I'd really
appreciate your feedback.
Thanks,
Ivo
Aug 11 2010
Hello Ivo,
class C(T, U : A!(T)) { ... }
And I'm trying to do this
void main()
{
C!(double, B!(double)) var;
}
but dmd complains:
Error: template instance C!(double,B) does not match template
declaration C(T,U : A!(T))
The way you have it is asking for an exact match. I would have to look it
up but I think you can make what you want work with something like this:
class C(T, U) if(is(U : A!(T))) { ... }
That takes any types T and U and then checks if U can convert to A!(T) (I
haven't tested that so I might have the syntax wrong.)
--
... <IXOYE><
Aug 11 2010








BCS <none anon.com>