From fa70f8b391102e2560c47562808a8fab6a64820b Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 11 Mar 2026 08:59:33 +0100 Subject: [PATCH 1/2] Update checkclass.cpp --- lib/checkclass.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index 2b972e221fc..e5d4991acd0 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -3269,6 +3269,8 @@ void CheckClass::checkOverride() continue; if (func.tokenDef->isExpandedMacro()) continue; + if (func.templateDef) + continue; const Function *baseFunc = func.getOverriddenFunction(); if (baseFunc) overrideError(baseFunc, &func); From 0c4919440a6b9b1e91b8d1ee9f14942b528b900e Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Wed, 11 Mar 2026 09:01:43 +0100 Subject: [PATCH 2/2] Update testclass.cpp --- test/testclass.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/testclass.cpp b/test/testclass.cpp index 9698916c41a..44b9cd499a9 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -8835,6 +8835,16 @@ class TestClass : public TestFixture { "};\n"); 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", errout_str()); + + checkOverride("struct B {\n" // #14581 + " virtual void f();\n" + "};\n" + "struct D : B {\n" + " void f() override;\n" + " template \n" + " void f();\n" + "};\n"); + ASSERT_EQUALS("", errout_str()); } void overrideCVRefQualifiers() {