The clang behavior was poor before this patch:
void B::foo() override {} // Before: clang emited "expcted function body after function // declarator", and skiped all contents until it hits a ";", the // following function f() is discarded. // VS // Nnow "override is not allowed" with a remove fixit, and following f() // is retained. void f();
virt-specifier is standardese. I think dropping virt, i.e. 'override' specifier... is clear enough.