28 lines
359 B
C++
28 lines
359 B
C++
|
/* { dg-do compile } */
|
||
|
bool foo();
|
||
|
|
||
|
struct A
|
||
|
{
|
||
|
A* fooA() { if (foo()) foo(); return this; }
|
||
|
|
||
|
virtual void barA(char);
|
||
|
};
|
||
|
|
||
|
template<int> struct B
|
||
|
{
|
||
|
A *p, *q;
|
||
|
|
||
|
void fooB(char c) { p->fooA()->barA(c); }
|
||
|
};
|
||
|
|
||
|
template<int N> inline void bar(B<N> b) { b.fooB(0); }
|
||
|
|
||
|
extern template void bar(B<0>);
|
||
|
|
||
|
void (*f)(B<0>) = bar;
|
||
|
|
||
|
void baz()
|
||
|
{
|
||
|
B<0>().fooB(0);
|
||
|
}
|