// PR c++/15629 // { dg-do link } template<int a, int b> class T; template<int a, int b> void func(T<a, b> * t); template<int a> void func(T<a, 3> * t) {} template void func<2>(T<2, 3>*); template<int a, int b> struct T { friend void func<a, b>(T<a, b> * t); friend void func<a> (T<a, 3> * t); void foo(); }; template<int a, int b> void T<a, b>::foo() { func((T<2,3>*)0); } int main() { T<2,3>().foo(); }