1 // { dg-do assemble  }
2 // { dg-additional-options -fpermissive }
3 // GROUPS passed missed-error
4 // missed-error file
5 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
6 // Date:     Thu, 21 May 92 15:40:45 PDT
7 // Subject:  More on [g++ 2.1 : overloaded function selection incorrect]
8 // Message-ID: <9205212240.AA17934@ndc.com>
9 
10 #include <iostream>
11 
12 // The VxWorks kernel-mode headers define a macro named "max", which is not
13 // ISO-compliant, but is part of the VxWorks API.
14 #if defined __vxworks && !defined __RTP__
15 #undef max
16 #endif
17 
max(int a,int b)18 inline int max(int a, int b) {return a > b ? a : b;}; // { dg-message "note" }
19  // { dg-error "extra ';'" "extra ;" { target c++98_only } .-1 }
max(double a,double b)20 inline double max(double a, double b) {return a > b ? a : b;}; // { dg-message "note" } candidate
21  // { dg-error "extra ';'" "extra ;" { target c++98_only } .-1 }
22 
main()23 int main() {
24   // we treat this as-if extern
25    static void foo(int i, int j, double x, double y) ;// { dg-error "" } .*
26 
27    foo(4, -37, 14.39, 14.38);
28 }
29 
foo(int i,int j,double x,double y)30 static void foo(int i, int j, double x, double y) // { dg-warning ".extern." }
31 {
32 
33    std::cout << "Max(int): " << max(i,j) << " Max(double): " <<
34 max(x,y) << '\n';
35    std::cout << "Max(int, double): " << max(i, y) << '\n';// { dg-error "" }
36 }
37 
38