1 // PR c++/66850 2 // Each namespace contains an otherwise standalone test case, none of which 3 // should cause an ICE. 4 5 namespace X { 6 template <template <typename U, U> class> struct Sort; 7 8 template <template <typename U, U> class Comparator> 9 struct Sort 10 { 11 template <int I> 12 struct less_than 13 { 14 Comparator<int, I> a; 15 }; 16 }; 17 } 18 19 namespace Y { 20 template <typename C, C> struct integral_constant {}; 21 22 template <typename T, template <typename U, U> class> struct Sort; 23 24 template <template <typename U, U> class Comparator> 25 struct Sort<int, Comparator> 26 { 27 template <int I> struct less_than: 28 integral_constant<bool, Comparator<int, I>::value> {}; 29 }; 30 } 31 32 namespace Z { 33 template <typename T, template <typename U, U> class> struct Sort; 34 35 template <template <typename U, U> class Comparator> 36 struct Sort<int, Comparator> 37 { 38 template <int I> 39 struct less_than 40 { 41 Comparator<int, I> a; 42 }; 43 }; 44 } 45