On 11/12/2012 04:38 PM, Vijay Nayar wrote:
I think this is what you want. This example compiled and ran using DMD v2.060.FooType.T1 func(FooType, FooT1)(FooType foo, FooT1 x) if (is(FooType.T1) && is(FooT1 : FooType.T1)) { return x * foo.a; }
Thanks for that. You're obviously correct to use FooType.T1 as return type here; the reality of what I'm trying to do is slightly more complicated, as the real situation I have is that I'm passing the x value on into another (also templated) function. But of course I can use FooType.T1 for that template value.
I'm still a little disappointed that I can't just insist that a given parameter type should depend on another template parameter. :-(
To be sure I understand your formulation, can you clarify the meaning of is(FooT1 : FooType.T1)?
