https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70178
--- Comment #5 from Zack Weinberg <zackw at panix dot com> --- It seems to me that a pair of extended integer types (signed and unsigned), that are the same size as `char` but don't get the special TBAA treatment for "character types", would be easier to implement and validate than figuring out what "restrict" means when applied to a data member, and probably just as effective in this context. `std::string` doesn't expose bare writable pointers so I *think* this has no compatibility implications. Note that I do *not* think it would be safe for [u]int8_t to be (defined as) those types.