https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85214
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> --- Further reduced: struct g { constexpr operator int() { return true; } }; template <typename T, typename U> constexpr bool m = true; template <long L> struct C { typedef double q; }; void ao() { [](auto i) { using ar = typename C<i>::q; [](auto j) { using as = typename C<j>::q; if constexpr (m<ar, as>) {} }(g()); }(g()); }