https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65455
--- Comment #18 from Marek Polacek <mpolacek at gcc dot gnu.org> --- So this looks like a dup of PR39985. It seems that, if anything, we should modify __typeof to drop all qualifiers. I.e. that all of the following __typeofs yield "int": const int a; volatile int b; const volatile c; _Atomic int d; int *restrict e; __typeof (a) x; __typeof (b) y; __typeof (c) q; __typeof (d) r; __typeof (const int) z; __typeof (volatile const int) w; __typeof (volatile int) v; __typeof (_Atomic volatile int) t; __typeof (*e) *s; Or is that not so? What should we do for C++?