Path: utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!PARIS.ICS.UCI.EDU!schmidt%crimee.ics.uci.edu From: schmidt%crimee.ics.uci.edu@PARIS.ICS.UCI.EDU ("Douglas C. Schmidt") Newsgroups: gnu.g++.bug Subject: G++ allows ambiguous overloading: Message-ID: <8901121935.aa04521@PARIS.ICS.UCI.EDU> Date: 13 Jan 89 03:34:52 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 49 Hi, The following short C++ program contains an erroneous conversion, according to cfront 1.2.1. It was taken from the article ``Building Well-Behaved Type Relationships in C++'' by R.B. Murray. ---------------------------------------- class Orange { public: char *c; operator int () { return (int (c)); } }; class Apple { public: int i; Apple() { } Apple(Orange F) { i = F; } }; overload cross; void cross (Orange, Apple); void cross (Apple, Apple); main ( ) { Orange Navel; Apple Mac; cross(Navel,Navel); // error: two possible conversions. } ---------------------------------------- Here's the CC diagnostic: ---------------------------------------- CC test.c: "test.c", line 27: error: ambiguous argument for overloaded cross() 1 error ---------------------------------------- g++ 1.32 doesn't complain, but should. Doug