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]

[Bug c++/69054] New: g++ fails to diagnose ambiguous overload resolution when implicit conversions are involved


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

            Bug ID: 69054
           Summary: g++ fails to diagnose ambiguous overload resolution
                    when implicit conversions are involved
           Product: gcc
           Version: 5.2.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pravasimeet999 at yahoo dot com
  Target Milestone: ---

The following program is ill formed C++. But on all versions of g++ it (See
live demo http://melpon.org/wandbox/permlink/EdNNBq5uiMTzDz51 )compiles fine
without any warnings or errors, but diagnostics is required for this program.
It fails in compilation on clang++. (See live demo
http://melpon.org/wandbox/permlink/UjZn64U5oX26xMFI ).

#include <iostream>
struct Base
{
    operator double() const { return 0.0; }
};

struct foo
{
    foo(const char* c) { }
};

struct Something : public Base
{
    void operator[](const foo& f) { }
};

int main()
{
    Something d;
    d["32"];
    return 0;
}

See this stackoverflow question for more details:
http://stackoverflow.com/questions/8914986/should-this-compile-overload-resolution-and-implicit-conversions?rq=1

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