Package: g++-6 Version: 6.2.0-13 Severity: minor While developing a custom implementation of std::make_index_sequence for compatibility with previous versions of gcc, I ran into an internal compiler error. I'm attaching the output of creduce on the source code, which still gives the same ICE.
-- System Information: Debian Release: stretch/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.8.0-1-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages g++-6 depends on: ii gcc-6 6.2.0-13 ii gcc-6-base 6.2.0-13 ii libc6 2.24-5 ii libgmp10 2:6.1.1+dfsg-1 ii libisl15 0.17.1-1 ii libmpc3 1.0.3-1 ii libmpfr4 3.1.5-1 ii libstdc++-6-dev 6.2.0-13 ii zlib1g 1:1.2.8.dfsg-2+b3 g++-6 recommends no packages. Versions of packages g++-6 suggests: pn g++-6-multilib <none> pn gcc-6-doc <none> pn libstdc++6-6-dbg <none> -- no debconf information
typedef long unsigned a; template <bool, typename> struct b; template <typename p> struct b<true, p> { typedef p c; }; template <bool d, typename p = void> using e = typename b<d, p>::c; template <typename f, f...> struct g; template <typename> struct h; template <typename f, f... i> struct h<g<f, i...>> { using c = g<f, i...>; }; template <typename> struct j; template <typename f, f... i> struct j<g<f, i...>> { using c = g<f, sizeof...(i)>; }; template <typename f, f, typename = void> struct k; template <typename f, f l> struct k<f, l, e<l == 0>> { using c = g<f>; }; template <typename f, f l> struct k<f, l, e<l && l % 2 == 0>> { using c = typename h<typename k<f, l / 2>::c>::c; }; template <typename f, f l> struct k<f, l, e<l % 2>> { using c = typename j<typename k<f, l / 2>::c>::c; }; template <typename f, f l> using m = typename k<f, l>::c; template <typename> template <a... i> using n = g<unsigned long, i...>; template <long l> using o = m<unsigned long, l>; template <a i> void increasing(n<i>) { increasing(o<10>{}); }