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