August 12, 2010 template subclass as template parameter | ||||
---|---|---|---|---|
| ||||
Attachments:
| 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 |
August 12, 2010 Re: template subclass as template parameter | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ivo Jimenez | 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>< |
Copyright © 1999-2021 by the D Language Foundation