https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116636
Bug ID: 116636 Summary: Deprecation warning/unavailable error when overriding member of virtual base class Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: rs2740 at gmail dot com Target Milestone: --- Repro: struct B { virtual void f() = 0; }; struct C : virtual B { [[deprecated("meow")]] void f() override {} }; <source>:6:24: warning: 'virtual void C::f()' is deprecated: meow [-Wdeprecated-declarations] 6 | void f() override {} | ^ <source>:6:10: note: declared here 6 | void f() override {} | ^ Likewise: struct B { virtual void f() = 0; }; struct C : virtual B { [[gnu::unavailable("meow")]] void f() override {} }; <source>:6:24: error: 'virtual void C::f()' is unavailable: meow 6 | void f() override {} | ^ <source>:6:10: note: declared here 6 | void f() override {} | ^ Making the base class non-virtual makes the warning/error go away.