schmidt%crimee.ics.uci.edu@PARIS.ICS.UCI.EDU ("Douglas C. Schmidt") (01/02/89)
Hi, The following C++ code demonstrates a problem with g++ 1.32. ---------------------------------------- // overloaded functions are ambiguous. #include <stream.h> class Foo { public: double i ( double = 10 ) { cout << "hello, this is wrong!\n"; return ( 10.0 ); } int i ( int = 10 ) { cout << "goodbye\n"; return ( 1 ); } }; main ( int, char *[ ] ) { Foo Bar; int i = Bar.i(); // ambiguous call. } ---------------------------------------- g++ compiles this without complaint, and then calls the *first* of the two overloaded member functions ( i.e., it seems to follow the rule that the first member function whose signature matches the call should be used. ). This seems rather arbitrary, and a warning message should probably be given. AT&T cfront 1.2.1. also gets this wrong, but at least it gives a warning message to the effect that int i = Bar.i() is attempting to assign a double to an int. Doug