[Bug c++/88675] New: std::make_integer_sequence not working for enums

huili80 at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Jan 3 14:08:00 GMT 2019


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))...>;


More information about the Gcc-bugs mailing list