https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85049
Jakub Jelinek changed:
What|Removed |Added
Priority|P3 |P1
CC||jakub at gcc dot gnu.org,
||jason at gcc dot gnu.org,
||redi at gcc dot gnu.org
Target Milestone|--- |8.0
Summary|Internal compiler error |[8 Regression] Internal
|with __integer_pack |compiler error with
||__integer_pack
--- Comment #3 from Jakub Jelinek ---
__integer_pack is a builtin template introduced in r248384 and introduced into
libstdc++ with r252923.
Testcase that matches exactly what libstdc++ does for index_sequence_for:
typedef __SIZE_TYPE__ size_t;
template
struct integer_sequence
{
typedef _Tp value_type;
static constexpr size_t size() noexcept { return sizeof...(_Idx); }
};
template
using make_integer_sequence = integer_sequence<_Tp, __integer_pack(_Num)...>;
template
using make_index_sequence = make_integer_sequence;
template
using index_sequence_for = make_index_sequence;
template
struct tuple {};
template
int get(tuple, Ts...>);
int x = get(tuple>{});
and this ICEs without any errors.
#include
template
struct tuple {};
template
int get(tuple, Ts...>);
int x = get(tuple>{});
is accepted by 7.x and thus this is a regression from 7.x.