I am trying to build a struct with equality testing, using this code:

struct Foo
{
    const bool opEquals(Foo f)
    {
        return true;
    }
}

This gives me the error that the parameter should be of type "ref const Foo".
Fine.

struct Foo
{
    const bool opEquals(ref const Foo f)
    {
        return true;
    }
}

This, however, does not work with code like:

Foo bar()
{
    return Foo();
}

assert(Foo() == bar());

"function Foo.opEquals(ref const const(Foo) f) const is not callable using
argument types (Foo)" and "bar() is not an lvalue".

How can I do this?

Reply via email to