================
@@ -0,0 +1,48 @@
+//===--- TemplateVirtualMemberFunctionCheck.cpp - clang-tidy 
--------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "TemplateVirtualMemberFunctionCheck.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+
+using namespace clang::ast_matchers;
+
+namespace clang::tidy::portability {
+
+void TemplateVirtualMemberFunctionCheck::registerMatchers(MatchFinder *Finder) 
{
+  Finder->addMatcher(classTemplateSpecializationDecl().bind("specialization"),
+                     this);
+}
+
+void TemplateVirtualMemberFunctionCheck::check(
+    const MatchFinder::MatchResult &Result) {
+  const auto *MatchedDecl =
+      
Result.Nodes.getNodeAs<ClassTemplateSpecializationDecl>("specialization");
+
+  if (MatchedDecl->isExplicitSpecialization())
+    return;
----------------
5chmidti wrote:

My bad.
I somehow got hung up on the partial specialization itself, but it just adds 
the possibility of the issue. The fact that the member is unused is only really 
knowable once we have an instantiation, which triggers a specialization for 
that instantiation.

https://github.com/llvm/llvm-project/pull/110099
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to