https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111633
Bug ID: 111633 Summary: __restrict on a member function is permitted in an inconsistent location relative to ref-qualifiers Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: richard-gccbugzilla at metafoo dot co.uk Target Milestone: --- GCC permits __restrict-qualified member functions. When combined with ref-qualifiers, the __restrict is written with the cv-qualifiers instead of after the ref-qualifier: struct A { // accepted void f() const __restrict &; // rejected void f() const & __restrict; }; This seems backwards to me. The `*this` parameter is of type `const &__restrict self`, so the latter syntax seems more appropriate. Perhaps it would make sense to accept the latter syntax, and possibly deprecate the former? (In the case of no ref-qualifier, it might make sense to also deprecate the case where the restrict qualifier is before or interleaved with cv-qualifiers.)