This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/69054] New: g++ fails to diagnose ambiguous overload resolution when implicit conversions are involved
- From: "pravasimeet999 at yahoo dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 25 Dec 2015 18:26:39 +0000
- Subject: [Bug c++/69054] New: g++ fails to diagnose ambiguous overload resolution when implicit conversions are involved
- Auto-submitted: auto-generated
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