[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / SemaCXX / converting-constructor.cpp
blobd66e09e9c4b0dea9ec5695d2914a50398dc17925
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
5 class Z { };
7 class Y {
8 public:
9 Y(const Z&);
12 class X {
13 public:
14 X(int);
15 X(const Y&);
18 void f(X); // expected-note{{candidate function}}
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}}
28 class FromShort {
29 public:
30 FromShort(short s);
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
38 public:
39 explicit FromShortExplicitly(short s); // expected-note {{explicit constructor is not a candidate}}
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}}
49 // PR5519
50 struct X1 { X1(const char&); };
51 void x1(X1);
52 void y1() {
53 x1(1);