[Issue 4239] Mixed tuple comparison
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed May 26 15:20:56 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4239
--- Comment #2 from Simen Kjaeraas <simen.kjaras at gmail.com> 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: -------
More information about the Digitalmars-d-bugs
mailing list