// REQUIRED_ARGS: -inline -O
// Test operator overloading
extern (C) int printf(const(char*) fmt, ...);
struct Tuple6798(T...)
{
    T field;
    alias field this;
    bool opEquals(Tuple6798 rxx)
    {
        foreach (i, _; T)
        {
            if (!__equals(this[i], rxx[i]))
                assert(0);
                //return false;
        }
        return true;
    }
}
auto tuple(T...)(T args)
{
    return Tuple6798!T(args);
}
int zzzz()
{
    if (!__equals("mno", "mno"))
        assert(0);
    assert(tuple("abcd", "x") == tuple("abcd", "x"));
    return 0;
}
int main()
{
    zzzz();
    printf("Success\n");
    return 0;
}