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