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