On Tue, Mar 17, 2020 at 2:12 PM Ryan Nicholl via Std-Proposals <std-proposals@lists.isocpp.org> wrote:

Consider:

class A : public B, public C
{
virtual int lock();
};

what happens if both B::lock and C::lock exist as virtual functions? we can override them both with one function... but what if they are interfaces that do different things and happen to use the same name?

Suggestion, specific override specifier:

virtual int lock_mutex() override(int B::lock());
virtual int lock_device() override(int C::lock());



I'd suggest a different syntax:

class A : public B, public C
{
   virtual int B::lock() override;
   virtual int C::lock() override;
};

but I've only needed this rarely; I suspect it probably isn't worth the trouble.


--
Be seeing you,
Tony