forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			505 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			505 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 %s -fsyntax-only -verify -Wweak-vtables
 | |
| 
 | |
| struct A { // expected-warning {{'A' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit}}
 | |
|   virtual void f() { } 
 | |
| };
 | |
| 
 | |
| template<typename T> struct B {
 | |
|   virtual void f() { } 
 | |
| };
 | |
| 
 | |
| namespace {
 | |
|   struct C { 
 | |
|     virtual void f() { }
 | |
|   };
 | |
| }
 | |
| 
 | |
| void f() {
 | |
|   struct A {
 | |
|     virtual void f() { }
 | |
|   };
 | |
| 
 | |
|   A *a;
 | |
|   a->f();
 | |
| }
 | |
| 
 | |
| // Use the vtables
 | |
| void uses(A &a, B<int> &b, C &c) {
 | |
|   a.f();
 | |
|   b.f();
 | |
|   c.f();
 | |
| }
 |