c++/10380: warning about "choosing ... over ..." when there is no choice

stip@mathematik.uni-ulm.de stip@mathematik.uni-ulm.de
Fri Apr 11 19:16:00 GMT 2003


>Number:         10380
>Category:       c++
>Synopsis:       warning about "choosing ... over ..." when there is no choice
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 11 19:16:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     stip@mathematik.uni-ulm.de
>Release:        unknown-1.0
>Organization:
>Environment:
gcc 3.2 on Solaris 2.9
>Description:
gcc produces warning about chosing one conversion operator over another in the following example where there is only one correct choice:

struct A
{
};

struct B : public A
{
};

class C {
    public:
        operator A() const { return A(); }
        operator B() { return B(); }
};

int
main()
{
    C c;

    A a;
    B b;

    a = c;
    b = c;

    return 0;
}

According to the standard IMO there is no reason to complain but the second conversion operator B() has
to be chosen in both assignments. There is no way to (correctly) apply the first conversion operator, so why
warning about the possibility?
There is no switch to turn exactly this warning off what makes it even worse.
>How-To-Repeat:
g++ 
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list