48 lines
		
	
	
		
			775 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			775 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s 
 | |
| class Z { };
 | |
| 
 | |
| class Y { 
 | |
| public:
 | |
|   Y(const Z&);
 | |
| };
 | |
| 
 | |
| class X {
 | |
| public:
 | |
|   X(int);
 | |
|   X(const Y&);
 | |
| };
 | |
| 
 | |
| void f(X); // expected-note{{candidate function}}
 | |
| 
 | |
| void g(short s, Y y, Z z) {
 | |
|   f(s);
 | |
|   f(1.0f);
 | |
|   f(y);
 | |
|   f(z); // expected-error{{no matching function}}
 | |
| }
 | |
| 
 | |
| 
 | |
| class FromShort {
 | |
| public:
 | |
|   FromShort(short s);
 | |
| };
 | |
| 
 | |
| class FromShortExplicitly { // expected-note{{candidate constructor (the implicit copy constructor)}}
 | |
| public:
 | |
|   explicit FromShortExplicitly(short s);
 | |
| };
 | |
| 
 | |
| void explicit_constructor(short s) {
 | |
|   FromShort fs1(s);
 | |
|   FromShort fs2 = s;
 | |
|   FromShortExplicitly fse1(s);
 | |
|   FromShortExplicitly fse2 = s; // expected-error{{no viable conversion}}
 | |
| }
 | |
| 
 | |
| // PR5519
 | |
| struct X1 { X1(const char&); };
 | |
| void x1(X1);
 | |
| void y1() {
 | |
|   x1(1);
 | |
| }
 | 
