On 6/25/22 00:26, Jason Merrill via Gcc-patches wrote:
This seems like a good warning to have in -Wall, as requested.  But as
pointed out in PR20423, some users want a warning only when a derived
function doesn't override any base function.  So let's put that lesser
version in -Wall (and -Woverloaded-virtual=1) while leaving the semantics
for the existing option the same.

This now causes

$ cat test.cc
struct S1 {};
struct S2: S1 { virtual ~S2(); };
struct S3 { virtual ~S3(); };
struct S4: S2, S3 { virtual ~S4(); };

$ g++ -Woverloaded-virtual -fsyntax-only test.cc
test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
    3 | struct S3 { virtual ~S3(); };
      |                     ^
test.cc:4:29: note:   by ‘virtual S4::~S4()’
    4 | struct S4: S2, S3 { virtual ~S4(); };
      |                             ^
test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
    3 | struct S3 { virtual ~S3(); };
      |                     ^
test.cc:4:29: note:   by ‘virtual S4::~S4()’
    4 | struct S4: S2, S3 { virtual ~S4(); };
      |                             ^
test.cc:3:21: warning: ‘virtual S3::~S3()’ was hidden [-Woverloaded-virtual=]
    3 | struct S3 { virtual ~S3(); };
      |                     ^
test.cc:4:29: note:   by ‘virtual S4::~S4()’
    4 | struct S4: S2, S3 { virtual ~S4(); };
      |                             ^

Reply via email to