http://d.puremagic.com/issues/show_bug.cgi?id=4239
--- Comment #2 from Simen Kjaeraas 2010-05-26 15:20:55
PDT ---
(In reply to comment #1)
> This seems to work fine:
>
> struct X(T...) { }
>
> static assert(is(X!(int, int) == X!(int, int)));
> static assert(is(X!(int, "foo") == X!(int, "foo")));
> static assert(!is(X!(int, "foo") == X!("foo", int)));
Indeed it does. I do however still feel it should be included in Phobos as
something more obvious.
Simplified version, with newly acquired knowledge:
/**
Compares tuples that might contain a mixture of types and values.
Example:
static assert(SameTuple!(int, int).As!(int, int));
static assert(SameTuple!(int, "foo").As!(int, "foo"));
static assert(!SameTuple!(int, "foo").As!("foo", int));
*/
struct SameTupleImpl(T...) {
}
template SameTuple(T...) {
template As(U...) {
enum As = is( SameTupleImpl!T == SameTupleImpl!U );
}
}
unittest {
static assert(SameTuple!(int, int).As!(int, int));
static assert(SameTuple!(float).As!(float));
static assert(SameTuple!("foo").As!("foo"));
static assert(!SameTuple!("foo").As!("bar"));
static assert(!SameTuple!(int ).As!("bar"));
static assert(!SameTuple!(int ).As!(float));
static assert(SameTuple!(int, "foo").As!(int, "foo"));
static assert(!SameTuple!(int, "foo").As!("foo", int));
static assert(SameTuple!().As!());
static assert(!SameTuple!(int).As!());
static assert(!SameTuple!().As!(int));
static assert(!SameTuple!("foo").As!());
static assert(!SameTuple!().As!("foo"));
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---