https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111544
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually this is the reduced testcase: ``` struct bs { int * const t; }; template <int n> struct a { int * const t; a &f(const a&, int *const tt, const a *c, const bs&); }; template <int n> a<n> & a<n>::f(const a &b, int *const tt, const a *c, const bs &d) { t = c->t; t = b.t; // t = d.t; // t = tt; return *this; } ``` clang accepts each of the above statements except for the commented out ones. Not even in pedantic mode they reject them.