https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113064

--- Comment #4 from m.cencora at gmail dot com ---
This also might be a just another symptom of the same root cause:

struct bar
{
    bar() = default;

    bar(const bar&);
    bar(bar&&);

    bar& operator=(const bar&);
    bar& operator=(bar&&);
};

struct foo
{
    operator const bar& () const &;

    operator bar& () &;

    operator bar&&() &&;
};

void test()
{
    bar a = foo{}; // ok

    a = foo{}; // not ok - ambiguous call, but why? &&-qualified looks like a
better match

    foo f;
    a = f; // ok

    a = static_cast<const foo&>(foo{}); // ok
}

Reply via email to