// { dg-do run } // Origin: Mark Mitchell <mark@codesourcery.com> int i; template <class T> struct S { S() { ++i; } virtual void g() {} virtual void f(); static S s; }; template <class T> void S<T>::f() { s.f(); } S<int> si; template <class T> S<T> S<T>::s; int main () { si.g(); if (i != 2) return 1; else return 0; }