// { dg-do link } template class foo { T deft; template int priv (U u, T t) { return u - t; } public: foo (T t) : deft (t) {} template int pub (U u) { int (foo::*fn) (U, T); fn = &foo::template priv; return (this->*fn) (u, deft); } }; int main () { foo fff (5); return fff.pub (3); }