On 02/17/2012 12:36 AM, Timon Gehr wrote:
On 02/17/2012 12:08 AM, James Miller wrote:
The first problem is trivial, solving the second one in a type safe way
would require adding parametric polymorphism to D. (Which I'd love to
have!)


Can't you emulate type-safe parametric polymorphism with template
constraints?

In general, no.

class A{
T foo[T](T x){ ... }
}
class B{
override T foo[T](T x){ ... }
}

Often you can, but then you get unnecessary code duplication, which is
presumably why SiegeLord dislikes templates.

T test(T)(T x) if(is(T:const(char[])){
T[int] a;
}

This is closer to the wanted semantics:
T[] test(T)(T[] x) if(is(T[]:const(char[])){
    T[][int] a;
}

Reply via email to