// 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(); | |
} |