🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.g++.bug
Article #1601

G++ allows ambiguous overloading:

#1601
From: "Douglas C. Schmidt"
Date: Fri, 13 Jan 1989 03:34
49 lines
1375 bytes
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
Technical Details
Message-ID: <8901121935.aa04521@PARIS.ICS.UCI.EDU>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!PARIS.ICS.UCI.EDU!schmidt%crimee.ics.uci.edu

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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