#include #include template struct tink { tink(); void use(); static tink inst; }; bool initialized = false; template tink::tink() { std::cout << "initialized\n"; initialized = true; } template void tink::use() { std::cout << "used\n"; } template tink tink::inst; template struct fu { fu(); }; template fu::fu() { std::cout << "fu\n"; tink::inst.use(); } template int f(int) { fu x; } int x = f(0); int main() { assert(initialized); }