29 if (matchesFirstInRange(InnerMatcher, PackArgs.begin(), PackArgs.end(),
33 return matchesFirstInRange(InnerMatcher, Args.begin(), Args.end(), Finder,
43 hasDeclContext(namespaceDecl(hasAnyName(
"std",
"posix"),
44 unless(hasParent(namespaceDecl())))
46 auto UserDefinedDecl =
47 namedDecl(anyOf(classTemplateDecl(), tagDecl()),
48 hasAncestor(namespaceDecl(hasAnyName(
"std",
"posix"),
49 unless(hasParent(namespaceDecl())))));
50 auto UserDefinedType = qualType(hasUnqualifiedDesugaredType(anyOf(
51 tagType(unless(hasDeclaration(UserDefinedDecl))),
52 templateSpecializationType(unless(hasDeclaration(UserDefinedDecl))))));
53 auto HasNoProgramDefinedTemplateArgument = unless(
54 hasAnyTemplateArgumentIncludingPack(refersToType(UserDefinedType)));
55 auto InsideStdClassOrClassTemplateSpecialization = hasDeclContext(
56 anyOf(cxxRecordDecl(HasStdParent),
57 classTemplateSpecializationDecl(
58 HasStdParent, HasNoProgramDefinedTemplateArgument)));
79 auto BadNonTemplateSpecializationDecl =
80 decl(unless(anyOf(functionDecl(isExplicitTemplateSpecialization()),
81 varDecl(isExplicitTemplateSpecialization()),
82 cxxRecordDecl(isExplicitTemplateSpecialization()))),
84 auto BadClassTemplateSpec = classTemplateSpecializationDecl(
85 HasNoProgramDefinedTemplateArgument, HasStdParent);
86 auto BadInnerClassTemplateSpec = classTemplateSpecializationDecl(
87 InsideStdClassOrClassTemplateSpecialization);
88 auto BadFunctionTemplateSpec =
89 functionDecl(unless(cxxMethodDecl()), isExplicitTemplateSpecialization(),
90 HasNoProgramDefinedTemplateArgument, HasStdParent);
91 auto BadMemberFunctionSpec =
92 cxxMethodDecl(isExplicitTemplateSpecialization(),
93 InsideStdClassOrClassTemplateSpecialization);
95 Finder->addMatcher(decl(anyOf(BadNonTemplateSpecializationDecl,
96 BadClassTemplateSpec, BadInnerClassTemplateSpec,
97 BadFunctionTemplateSpec, BadMemberFunctionSpec))