forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			746 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			746 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
 | |
| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
 | |
| 
 | |
| // <rdar://problem/10228639>
 | |
| class Foo {
 | |
|   ~Foo();
 | |
|   Foo(const Foo&);
 | |
| public:
 | |
|   Foo(int);
 | |
| };
 | |
| 
 | |
| class Bar {
 | |
|   int foo_count;
 | |
|   Foo foos[0];
 | |
| #if __cplusplus >= 201103L
 | |
| // expected-note@-2 {{copy constructor of 'Bar' is implicitly deleted because field 'foos' has an inaccessible copy constructor}}
 | |
| #endif
 | |
|   Foo foos2[0][2];
 | |
|   Foo foos3[2][0];
 | |
| 
 | |
| public:
 | |
|   Bar(): foo_count(0) { }    
 | |
|   ~Bar() { }
 | |
| };
 | |
| 
 | |
| void testBar() {
 | |
|   Bar b;
 | |
|   Bar b2(b);
 | |
| #if __cplusplus >= 201103L
 | |
| // expected-error@-2 {{call to implicitly-deleted copy constructor of 'Bar}}
 | |
| #else
 | |
| // expected-no-diagnostics
 | |
| #endif
 | |
|   b = b2;
 | |
| }
 |