On Monday, 30 July 2012 at 20:48:26 UTC, Philippe Sigaud wrote:
Now if all that is correct, say I want to make two functions that both use X, but are not compatible, but template functions will allow it. So...

I'm not sure I understand what you're trying to do. Do you mean you want a function that accept X!(T)s for any T, and not any other type?

Anything of template X! previous post of mine shows sort of an example.

struct X(T) {}

void func(T)(X!T x)
{}

void main()
{
    X!bool b;
    X!int i;
    func(b);
    func(i);
}

Hmmm i do think that seems right... but if it contains multiple parameters, then...?

template X(x1, x2, x3) {
 struct XT {}
}

void func(T)(X!T x) {}
Will this still work?

Here you want a constraint that checks that U and T are both
X!(SomeType) or an XY?

As before, of Template X, and struct XY, but T (or sometype) doesn't matter.

void tempFunc(T,U)(T t, U u) if (is(T a == X!(SomeType), SomeType) &&
is(U a == X!(SomeType), SomeType)
|| is(T == XY) && is(U == XY))
{
...
}
Is that what you need?

I want to say no... But I haven't actually tested it for my use cases. Leaving it unconstrained (without checking) to make it work is a disaster waiting to happen: I want T and U to both be of the same template (X in this case) but not the same instantiation arguments.

 I hope I'm not repeating myself too much.

Reply via email to