Home | History | Annotate | Download | only in dcl.fct.default
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 void f0(int i, int j, int k = 3);
      4 void f0(int i, int j, int k);
      5 void f0(int i, int j = 2, int k);
      6 void f0(int i, int j, int k);
      7 void f0(int i = 1, // expected-note{{previous definition}}
      8         int j, int k);
      9 void f0(int i, int j, int k);
     10 
     11 namespace N0 {
     12   void f0(int, int, int); // expected-note{{candidate}}
     13 
     14   void test_f0_inner_scope() {
     15     f0(); // expected-error{{no matching}}
     16   }
     17 }
     18 
     19 void test_f0_outer_scope() {
     20   f0(); // okay
     21 }
     22 
     23 void f0(int i = 1, // expected-error{{redefinition of default argument}}
     24         int, int);
     25 
     26 template<typename T> void f1(T); // expected-note{{previous}}
     27 
     28 template<typename T>
     29 void f1(T = T()); // expected-error{{cannot be added}}
     30 
     31 
     32 namespace N1 {
     33   // example from C++03 standard
     34   // FIXME: make these "f2"s into "f"s, then fix our scoping issues
     35   void f2(int, int);
     36   void f2(int, int = 7);
     37   void h() {
     38     f2(3); // OK, calls f(3, 7)
     39     void f(int = 1, int);	// expected-error{{missing default argument}}
     40   }
     41 
     42   void m()
     43   {
     44     void f(int, int); // expected-note{{'f' declared here}}
     45     f(4);  // expected-error{{too few arguments to function call}}
     46     void f(int, int = 5); // expected-note{{previous definition}}
     47     f(4); // okay
     48     void f(int, int = 5); // expected-error{{redefinition of default argument}}
     49   }
     50 
     51   void n()
     52   {
     53     f2(6); // okay
     54   }
     55 }
     56