1 // PR c++/68585
2 // { dg-do compile { target c++11 } }
3 
4 template<typename T, unsigned N>
5   struct array
6   {
7     T _M_data[N];
8   };
9 
10 template<typename _Tp, _Tp... _Idx>
11   struct integer_sequence
12   {
13   };
14 
15 struct Pos
16 {
17   unsigned l;
18 };
19 
20 template<class T, T... Ints>
make_grid_position(integer_sequence<T,Ints...>)21 constexpr array<Pos, sizeof...(Ints)> make_grid_position(integer_sequence<T, Ints...>)
22 {
23   return {{ Pos{Ints}... }};
24 }
25 
make_grid_positions()26 constexpr array<Pos, 1> make_grid_positions()
27 {
28   return make_grid_position(integer_sequence<unsigned, 0>{});
29 }
30 
31 template<class T>
generate_sudoku(T)32 void generate_sudoku(T)
33 {
34   constexpr auto positions = make_grid_positions(); // fail
35 }
36 
main()37 int main()
38 {
39   constexpr auto positions = make_grid_positions(); // ok
40   generate_sudoku(1);
41 }
42