#include <stdio.h>
class A
{
public:
template< class T > void Func( void ){}
};
template< class T >
class B
{
public:
void FuncB( T* p )
{
/* error
p->Func<B>();
*/
p->template Func<B>();
}
};
int main( void )
{
A a;
B<A> b;
b.FuncB(&a);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjbGFzcyBBCnsKcHVibGljOgogICAgdGVtcGxhdGU8IGNsYXNzIFQgPiB2b2lkIEZ1bmMoIHZvaWQgKXt9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgVCA+CmNsYXNzIEIKewpwdWJsaWM6CiAgICB2b2lkIEZ1bmNCKCBUKiBwICkKICAgIHsKICAgICAgICAvKiBlcnJvcgogICAgICAgIHAtPkZ1bmM8Qj4oKTsKICAgICAgICAqLwogICAgICAgIHAtPnRlbXBsYXRlIEZ1bmM8Qj4oKTsKICAgIH0KfTsKCmludCBtYWluKCB2b2lkICkKewogICAgQSAgICBhOwogICAgQjxBPiBiOwogICAgYi5GdW5jQigmYSk7CiAgICByZXR1cm4gMDsKfQ==