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.