Skip to content

Commit 7d80f64

Browse files
Fix #14581 FP missingOverride for uninstantiated template overload (danmar#8322)
1 parent 951567b commit 7d80f64

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

lib/checkclass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3271,6 +3271,8 @@ void CheckClass::checkOverride()
32713271
continue;
32723272
if (func.tokenDef->isExpandedMacro())
32733273
continue;
3274+
if (func.templateDef)
3275+
continue;
32743276
const Function *baseFunc = func.getOverriddenFunction();
32753277
if (baseFunc)
32763278
overrideError(baseFunc, &func);

test/testclass.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8842,6 +8842,16 @@ class TestClass : public TestFixture {
88428842
"};\n");
88438843
ASSERT_EQUALS("[test.cpp:2:14] -> [test.cpp:5:6]: (style) The destructor '~D' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride]\n",
88448844
errout_str());
8845+
8846+
checkOverride("struct B {\n" // #14581
8847+
" virtual void f();\n"
8848+
"};\n"
8849+
"struct D : B {\n"
8850+
" void f() override;\n"
8851+
" template <typename T>\n"
8852+
" void f();\n"
8853+
"};\n");
8854+
ASSERT_EQUALS("", errout_str());
88458855
}
88468856

88478857
void overrideCVRefQualifiers() {

0 commit comments

Comments
 (0)