// { dg-do run } // Test for partial specialization of a member function template. // Origin: Jason Merrill <jason@cygnus.com> template <class T> struct A { template <class U> int f(U) { return 42; } }; template <> template <class U> int A<char>::f(U); template <> template <class U> int A<double>::f(U) { return 24; } int main () { A<int> ai; if (ai.f(0) != 42) return 1; A<double> ad; if (ad.f(0) != 24) return 1; A<char> ac; if (ac.f(0) != 36) return 1; } template <> template <class U> int A<char>::f(U) { return 36; }