https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61732
--- Comment #2 from Joaquín M López Muñoz <joaquin at tid dot es> --- Umm... This is not how I read [class]/3 (no mention to instances there). And, moreover, if your interpretation was right then the following should compile too: struct X final{}; struct derived:X{}; void foo(derived*){} int main() { foo(0); } but GCC, here, does complain that derived can't derive from X.