This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


>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 at mathematik dot uni-ulm dot 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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]