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

--- Comment #11 from m.cencora at gmail dot com ---
This is surprising to say the least because apparently for following code
(where both conversion operators return same type) the compiler somehow
correctly chooses && qualified overload:

struct bar
{
    bar() = default;

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

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

struct foo
{
    operator bar() const &;

    operator bar() &&;
};

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

    a = foo{};

    foo f;
    a = f; // ok
}

So why cannot it apply the same overload resolution, when conversion operators
return different type as in comment #4?

Do you think this qualifies for a defect report?

Reply via email to