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 UserDefinedType = qualType(
47 hasUnqualifiedDesugaredType(tagType(unless(hasDeclaration(tagDecl(
48 hasAncestor(namespaceDecl(hasAnyName(
"std",
"posix"),
49 unless(hasParent(namespaceDecl()))))))))));
50 auto HasNoProgramDefinedTemplateArgument = unless(
51 hasAnyTemplateArgumentIncludingPack(refersToType(UserDefinedType)));
52 auto InsideStdClassOrClassTemplateSpecialization = hasDeclContext(
53 anyOf(cxxRecordDecl(HasStdParent),
54 classTemplateSpecializationDecl(
55 HasStdParent, HasNoProgramDefinedTemplateArgument)));
76 auto BadNonTemplateSpecializationDecl =
77 decl(unless(anyOf(functionDecl(isExplicitTemplateSpecialization()),
78 varDecl(isExplicitTemplateSpecialization()),
79 cxxRecordDecl(isExplicitTemplateSpecialization()))),
81 auto BadClassTemplateSpec = classTemplateSpecializationDecl(
82 HasNoProgramDefinedTemplateArgument, HasStdParent);
83 auto BadInnerClassTemplateSpec = classTemplateSpecializationDecl(
84 InsideStdClassOrClassTemplateSpecialization);
85 auto BadFunctionTemplateSpec =
86 functionDecl(unless(cxxMethodDecl()), isExplicitTemplateSpecialization(),
87 HasNoProgramDefinedTemplateArgument, HasStdParent);
88 auto BadMemberFunctionSpec =
89 cxxMethodDecl(isExplicitTemplateSpecialization(),
90 InsideStdClassOrClassTemplateSpecialization);
92 Finder->addMatcher(decl(anyOf(BadNonTemplateSpecializationDecl,
93 BadClassTemplateSpec, BadInnerClassTemplateSpec,
94 BadFunctionTemplateSpec, BadMemberFunctionSpec),
95 unless(isExpansionInSystemHeader()))