https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88675
Bug ID: 88675 Summary: std::make_integer_sequence not working for enums Product: gcc Version: 8.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: huili80 at gmail dot com Target Milestone: --- The following code doesn't compile with --std=c++17: #include <utility> enum Number { Zero, One, Two, Three }; int main() { std::make_integer_sequence<Number,Three> s; } The error read: /usr/include/c++/8/utility: In substitution of 'template<class _Tp, _Tp _Num> using make_integer_sequence = std::integer_sequence<_Tp, __integer_pack(_Num)...> [with _Tp = Number; _Tp _Num = (Number)3]': t.cpp:13:43: required from here /usr/include/c++/8/utility:329:55: error: invalid conversion from 'sizetype' to 'Number' [-fpermissive] = integer_sequence<_Tp, __integer_pack(_Num)...>; ^ /usr/include/c++/8/utility:329:55: error: invalid conversion from 'sizetype' to 'Number' [-fpermissive] /usr/include/c++/8/utility:329:55: error: invalid conversion from 'sizetype' to 'Number' [-fpermissive] I suspect that this would be an easy fix by changing /usr/include/c++/8/utility:329 to = integer_sequence<_Tp, _Tp(__integer_pack(_Num))...>;