1 /* { dg-do compile } */ 2 bool foo(); 3 4 struct A 5 { fooAA6 A* fooA() { if (foo()) foo(); return this; } 7 8 virtual void barA(char); 9 }; 10 11 template<int> struct B 12 { 13 A *p, *q; 14 fooBB15 void fooB(char c) { p->fooA()->barA(c); } 16 }; 17 bar(B<N> b)18template<int N> inline void bar(B<N> b) { b.fooB(0); } 19 20 extern template void bar(B<0>); 21 22 void (*f)(B<0>) = bar; 23 baz()24void baz() 25 { 26 B<0>().fooB(0); 27 } 28