Newsgroups: comp.std.c++ Path: utzoo!utgpu!cunews!csi.uottawa.ca!news From: hitz@csi.uottawa.ca (Martin Hitz) Subject: Overloading Resolution Message-ID: <1991Jun26.140508.19662@csi.uottawa.ca> Summary: Standardization *IS* necessary Keywords: Overloading Resolution, Argument Matching, Compiler Bugs Sender: news@csi.uottawa.ca Nntp-Posting-Host: sim5 Organization: University of Ottawa Date: Wed, 26 Jun 91 14:05:08 GMT In the course of testing my understanding of the rules for argument matching given in section 13.2 in the ARM, I tried to predict the outcome of the program given below. In order to verify my conclusions, I tried the program with 4 different compilers (GNU g++, Sun's cfront, Zortech, and Borland C++). As the results have been somewhat arbitrary, I'd like to get your comments on who's right: #include void f (const double &, double, void *) { cout << 1; } void f (double &, int, const char * = 0) { cout << 2; } void f (int) { cout << 3; } void f (long, int = 0) { cout << 4; } main () { double b; const double pi = 3.14; // Z g++ cfront BC++ //--------------------------------------- f(1.1, 1, f); // 1 err err 1 f(1, 1, "Y"); // err err err 2 f(3, 1.1, 0); // err err 1 err f(1.1, 3, (void*)0);// err 1 1 err f(1, 1); // err 4 4 4 f(pi, pi, "Y"); // 1 1 1 err f(0L); // 4 3 4 4 f(0L, 'a'); // err 4 4 4 f(pi); // err 3 err err } Thanks, Martin Hitz@csi.uottawa.ca