2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.bugs / 900220_03.C
blob7e4aab6f0a19107adbf721ba31a986a9918031d3
1 // { dg-do run  }
2 // g++ 1.36.1 bug 900220_03
4 // g++ does not properly disambiguate calls to overloaded functions
5 // which are nearly identical except that one take a reference to a
6 // type `T' object and another takes a reference to a type `const T'
7 // object.
9 // (Note that the volatile stuff is commented out here because cfront
10 // does not yet grok volatile.)
12 // Cfront 2.0 passes this test.
14 // keywords: references, overloading, type qualifiers, pointers
16 int c_call_count = 0;
17 int cc_call_count = 0;
18 //int vc_call_count = 0;
20 void overloaded (char&)
22   c_call_count++;
25 void overloaded (const char&)
27   cc_call_count++;
30 //void overloaded (volatile char&)
31 //{
32 //  vc_call_count++;
33 //}
35 int test ()
37   char c = 0;
38   const char cc = 0;
39   //volatile char vc = 0;
41   char& cr = c;
42   const char& ccr = cc;
43   //volatile char& vcr = vc;
45   overloaded (c);               // OK
46   overloaded (cc);              // { dg-bogus "" } 
47   //overloaded (vc);            // OK
49   return (c_call_count != 1 || cc_call_count != 1 /* || vc_call_count != 1 */);
52 int main () { return test (); }