1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s 3 4 namespace ambig { 5 struct Foo { 6 operator int(); 7 operator const char *(); 8 }; 9 10 11 void func(const char*, long); 12 void func(const char*, const char*); 13 void func(int, int); 14 doit(Foo x)15 bool doit(Foo x) { 16 func(x, x); // expected-error {{call to 'func' is ambiguous}} 17 // expected-note@* 3{{candidate}} 18 // Check that two functions with best conversions are at the top. 19 // CHECK: error: call to 'func' is ambiguous 20 // CHECK-NEXT: func(x, x) 21 // CHECK-NEXT: ^~~~ 22 // CHECK-NEXT: note: candidate function 23 // CHECK-NEXT: void func(const char*, const char*) 24 // CHECK-NEXT: ^ 25 // CHECK-NEXT: note: candidate function 26 // CHECK-NEXT: void func(int, int) 27 } 28 } 29 30 namespace bad_conversion { 31 struct Foo { 32 operator int(); 33 operator const char *(); 34 }; 35 36 37 void func(double*, const char*, long); 38 void func(double*, const char*, const char*); 39 void func(double*, int, int); 40 doit(Foo x)41 bool doit(Foo x) { 42 func((int*)0, x, x); // expected-error {{no matching function for call to 'func'}} 43 // expected-note@* 3{{candidate}} 44 // Check that two functions with best conversions are at the top. 45 // CHECK: error: no matching function for call to 'func' 46 // CHECK-NEXT: func((int*)0, x, x) 47 // CHECK-NEXT: ^~~~ 48 // CHECK-NEXT: note: candidate function 49 // CHECK-NEXT: void func(double*, const char*, const char*) 50 // CHECK-NEXT: ^ 51 // CHECK-NEXT: note: candidate function 52 // CHECK-NEXT: void func(double*, int, int) 53 } 54 } 55 56 namespace bad_deduction { 57 template <class> struct templ {}; 58 template <class T> void func(templ<T>); 59 template <class T> void func(T*); 60 template <class T> auto func(T&) -> decltype(T().begin()); 61 template <class T> auto func(const T&) -> decltype(T().begin()); 62 doit()63 bool doit() { 64 struct record {} r; 65 func(r); // expected-error {{no matching function for call to 'func'}} 66 // expected-note@* 4{{candidate}} 67 } 68 } 69