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
}