1// { dg-do run  }
2// Test matching of partial specializations.
3
4template <int* x, int* y>
5class EQUAL {
6public:
7	enum { value = 0 };
8};
9template <int* x>
10class EQUAL<x,x> {
11public:
12	enum { value = 1 };
13};
14
15int x;
16int y;
17
18int equals_x_x = EQUAL<&x,&x>::value; // expected value: 1
19int equals_x_y = EQUAL<&x,&y>::value; // expected value: 0
20int equals_y_x = EQUAL<&y,&x>::value; // expected value: 0
21int equals_y_y = EQUAL<&y,&y>::value; // expected value: 1
22
23int main ()
24{
25  if (equals_x_x == 1
26      && equals_x_y == 0
27      && equals_y_x == 0
28      && equals_y_y == 1)
29    return 0;
30  return 1;
31}
32