https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62149
Bug ID: 62149
Summary: ICE in tsubst_copy, at cp/pt.c:12646 with constexpr
and tuple_size
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tower120 at gmail dot com
In the following code:
#include <iostream>
#include <string>
#include <vector>
#include <tuple>
using namespace std;
template<class ..._Attrs>
struct Test{
using Attrs22 = tuple< _Attrs... >;
Attrs22 attrs22;
void setup(){
int constexpr size2 = tuple_size<Attrs22>::value;
int idsa[size2];
//int idsa[tuple_size<Attrs22>::value]; // this works ok!
auto fn = [&](auto &&attr){
idsa[0];
};
fn(11);
}
};
int main()
{
Test<int, int, int> t;
t.setup();
}
Compiled with:
g++ -std=c++1y -O3 -Winline -Wextra -pthread -pedantic-errors main.cpp -lm &&
./a.out
I have the following error:
internal compiler error: in tsubst_copy, at cp/pt.c:12646
idsa[0];
^
libbacktrace could not find executable to open
-------------------------------
P.S. If not use constexpr, all works fine.