Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 class Z { };
      3 
      4 class Y {
      5 public:
      6   Y(const Z&);
      7 };
      8 
      9 class X {
     10 public:
     11   X(int);
     12   X(const Y&);
     13 };
     14 
     15 void f(X); // expected-note{{candidate function}}
     16 
     17 void g(short s, Y y, Z z) {
     18   f(s);
     19   f(1.0f);
     20   f(y);
     21   f(z); // expected-error{{no matching function}}
     22 }
     23 
     24 
     25 class FromShort {
     26 public:
     27   FromShort(short s);
     28 };
     29 
     30 class FromShortExplicitly { // expected-note{{candidate constructor (the implicit copy constructor)}}
     31 public:
     32   explicit FromShortExplicitly(short s);
     33 };
     34 
     35 void explicit_constructor(short s) {
     36   FromShort fs1(s);
     37   FromShort fs2 = s;
     38   FromShortExplicitly fse1(s);
     39   FromShortExplicitly fse2 = s; // expected-error{{no viable conversion}}
     40 }
     41 
     42 // PR5519
     43 struct X1 { X1(const char&); };
     44 void x1(X1);
     45 void y1() {
     46   x1(1);
     47 }
     48