forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			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);
 | 
						|
}
 |