https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116789
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: ``` struct s3 { template <typename T> constexpr s3(T x){} }; template <typename T, s3 N> class s1; template <typename T> class s2; template <typename T, s3 sz> using ali1 = s1<T, sz>; template <typename T> void h() { s2<T> A; ali1<T, A.func()> b; } ``` The important part is the type alias ali1.