1 // PR c++/54090
2 
3 template <int n>
4 struct X {
5 
6   template <int N, bool = (n >= N), typename T = void> struct Y;
7 
8   template <int N, typename T>
9   struct Y<N, true, T> {};
10 
11   static const int M = n / 2;
12 
13   template <typename T>
14   struct Y<X::M, true, T> {};
15 };
16 
17 void foo() {
18   X<10>::Y<10/2> y;
19 }
20