On Wednesday, 18 January 2017 at 22:39:02 UTC, Ali Çehreli wrote:
On 01/18/2017 02:02 PM, Jordan Wilson wrote:
[...]

Yes, can be better with something similar to the following:

struct Foo {
    string bar;
}

string value(U : Foo)(U u) {
    return u.bar;
}

string value(U : string)(U u) {
    return u;
}

auto sameGroup(T,S) (T a, S b) {
    static assert (is(T == string) || is(T == Foo));
    static assert (is(S == string) || is(S == Foo));

    import std.algorithm;
    return equal (value(a), value(b));
}

void main() {
    assert(sameGroup("a", "b") == false);
    assert(sameGroup("a", Foo("a")) == true);
    assert(sameGroup(Foo("x"), "b") == false);
    assert(sameGroup(Foo("z"), Foo("z")) == true);
}

Ali

Nice, yes looks better thanks.
Jordan

Reply via email to