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