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)18 template<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()24 void baz()
25 {
26   B<0>().fooB(0);
27 }
28