1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s 3 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 4 5 class Z { }; 6 7 class Y { 8 public: 9 Y(const Z&); 10 }; 11 12 class X { 13 public: 14 X(int); 15 X(const Y&); 16 }; 17 18 void f(X); // expected-note{{candidate function}} 19 20 void g(short s, Y y, Z z) { 21 f(s); 22 f(1.0f); 23 f(y); 24 f(z); // expected-error{{no matching function}} 25 } 26 27 28 class FromShort { 29 public: 30 FromShort(short s); 31 }; 32 33 class FromShortExplicitly { // expected-note{{candidate constructor (the implicit copy constructor)}} 34 #if __cplusplus >= 201103L // C++11 or later 35 // expected-note@-2 {{candidate constructor (the implicit move constructor) not viable}} 36 #endif 37 38 public: 39 explicit FromShortExplicitly(short s); 40 }; 41 42 void explicit_constructor(short s) { 43 FromShort fs1(s); 44 FromShort fs2 = s; 45 FromShortExplicitly fse1(s); 46 FromShortExplicitly fse2 = s; // expected-error{{no viable conversion}} 47 } 48 49 // PR5519 50 struct X1 { X1(const char&); }; 51 void x1(X1); 52 void y1() { 53 x1(1); 54 } 55