https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89119
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Aha -- I thought the RANGE_EXPR could have something value-dependent, but as this shows, it's not the case: struct S { int a[4]; }; template<int N> struct R { int a[N]; }; template <typename T> void fn () { constexpr auto s = S(); constexpr auto r = R<4>(); } void foo () { fn<int>(); }