-// Build don't link:
+// Test for partial specialization of a member function template.
// Origin: Jason Merrill <jason@cygnus.com>
template <class T> struct A {
- template <class U> void f(U);
+ template <class U> int f(U) { return 42; }
};
template <>
template <class U>
-void A<int>::f(U);
+int A<char>::f(U);
-A<int> a;
+template <>
+template <class U>
+int A<double>::f(U) { return 24; }
-void g ()
+int main ()
{
- a.f (3);
+ 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; }