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