https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116399
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- I don't agree. Containers do: class X { using iterator = <implementation-defined>; iterator begin(); iterator end(); }; So clearly the type is the same. That's not how text_encoding::aliases_view is specified. The standard doesn't say begin() and end() return the same type, and it doesn't say aliases_view models common_range. So it's already unspecified.