summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C
blob: 52519fad64621d96c287bbbc4b870f308979870d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// { 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; }