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...>)21constexpr array<Pos, sizeof...(Ints)> make_grid_position(integer_sequence<T, Ints...>) 22 { 23 return {{ Pos{Ints}... }}; 24 } 25 make_grid_positions()26constexpr 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)32void generate_sudoku(T) 33 { 34 constexpr auto positions = make_grid_positions(); // fail 35 } 36 main()37int main() 38 { 39 constexpr auto positions = make_grid_positions(); // ok 40 generate_sudoku(1); 41 } 42