Home | History | Annotate | Download | only in SemaCXX
      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