21 cxxMethodDecl(isVirtual(),
22 ofClass(classTemplateSpecializationDecl(
23 unless(isExplicitTemplateSpecialization()))
24 .bind(
"specialization")),
25 unless(isUsed()), unless(isPure()),
26 unless(cxxDestructorDecl(isDefaulted())))
32 const MatchFinder::MatchResult &Result) {
33 const auto *ImplicitSpecialization =
34 Result.Nodes.getNodeAs<ClassTemplateSpecializationDecl>(
"specialization");
35 const auto *MethodDecl = Result.Nodes.getNodeAs<CXXMethodDecl>(
"method");
37 diag(MethodDecl->getLocation(),
38 "unspecified virtual member function instantiation; the virtual "
39 "member function is not instantiated but it might be with a "
40 "different compiler");
41 diag(ImplicitSpecialization->getPointOfInstantiation(),
42 "template instantiated here", DiagnosticIDs::Note);