https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67768
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED Target Milestone|--- |8.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Fixed in GCC 8. Here is a self contained testcase (no libstdc++ involved): template<int I,class T>T echo(T v) { return v; } template<typename ...T> struct run1; template<> struct run1<>{}; template<typename T> struct run1<T>{run1(T a){a();}}; template<typename T, typename ...T1> struct run1<T, T1...> : run1<T1...>{run1(T a, T1... b) : run1<T1...>(b...) {a();}}; template<typename ...T> void run11(T... a) { run1<T...>(a...); } template<int... Is>void run(void) { int x = 10; run11(echo<Is>([y=x](){if (y!=10) __builtin_abort();})...); } int main() { run<0,1,2>(); } -------- CUT ----------