33 lines · cpp
1// RUN: not %clang_cc1 -fsyntax-only -fshow-overloads=best -fno-caret-diagnostics %s 2>&1 | FileCheck %s2struct S {3 S(void*);4 S(char*);5 S(unsigned char*);6 S(signed char*);7 S(unsigned short*);8 S(signed short*);9 S(unsigned int*);10 S(signed int*);11};12void f(const S& s);13 14// First call to f emits all candidates. Second call emits just the first 4.15void g() { f(0); }16// CHECK: {{conversion from 'int' to 'const S' is ambiguous}}17// CHECK-NEXT: {{candidate constructor}}18// CHECK-NEXT: {{candidate constructor}}19// CHECK-NEXT: {{candidate constructor}}20// CHECK-NEXT: {{candidate constructor}}21// CHECK-NEXT: {{candidate constructor}}22// CHECK-NEXT: {{candidate constructor}}23// CHECK-NEXT: {{candidate constructor}}24// CHECK-NEXT: {{candidate constructor}}25 26void h() { f(0); }27// CHECK: {{conversion from 'int' to 'const S' is ambiguous}}28// CHECK-NEXT: {{candidate constructor}}29// CHECK-NEXT: {{candidate constructor}}30// CHECK-NEXT: {{candidate constructor}}31// CHECK-NEXT: {{candidate constructor}}32// CHECK-NEXT: {{remaining 4 candidates omitted; pass -fshow-overloads=all to show them}}33