http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50811
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-10-21 14:38:03 UTC --- Daniel watches any PR to do with C++11 non-conformance ;) No, this didn't come up in the context of the library (although I might use final on some of the shared_ptr and future helper classes to enable de-virtualisation.) I'm using -Wdelete-non-virtual-dtor and adding __final (in std=c++98 mode) to classes so the compiler knows when not to warn. I hit the bug with code like: // a.h struct Interface { virtual void f() = 0; }; class A { class Impl; Impl* impl; }; // a.cc class A::Impl __final : Interface { ... };