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