https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65186
--- Comment #10 from Patrick Palka <ppalka at gcc dot gnu.org> --- When I said that this PR is not a dup of c++/30044 I sadly failed to look at #c1 and instead only looked at #c3. The test case in #c1 does appear to effectively be a dup of c++/30044, and with the fix for that PR now in trunk this test case no longer ICEs, but now it fails with a compile error: 65186.cc:10:3: error: ‘C<x, x, x>’ is not a valid type for a template non-type parameter C<x, x, x>> ^ This seems to be a bogus error because after instantiation C<x, x, x> will resolve to int which is a valid type for the template parameter. The fix for this is simple. The test cases in #c3 and in #c8 however exposes an entirely different bug than the test case in #c1 (even though the ICE is the same). I wonder what the standard procedure here is. Should this PR be split into two?