18 auto AllocatorConst = qualType(hasCanonicalType(
19 recordType(hasDeclaration(classTemplateSpecializationDecl(
20 hasName(
"::std::allocator"),
21 hasTemplateArgument(0,
22 refersToType(qualType(isConstQualified()))))))));
24 auto HasContainerName =
25 hasAnyName(
"::std::vector",
"::std::deque",
"::std::list",
26 "::std::multiset",
"::std::set",
"::std::unordered_multiset",
27 "::std::unordered_set",
"::absl::flat_hash_set");
35 anyOf(templateSpecializationTypeLoc(),
37 hasUnqualifiedLoc(templateSpecializationTypeLoc()))),
39 recordType(hasDeclaration(classTemplateSpecializationDecl(
42 hasTemplateArgument(1, refersToType(AllocatorConst)),
43 hasTemplateArgument(2, refersToType(AllocatorConst)),
44 hasTemplateArgument(3, refersToType(AllocatorConst)))))),
46 templateSpecializationType(
47 templateArgumentCountIs(1),
49 0, refersToType(qualType(isConstQualified()))),
50 hasDeclaration(namedDecl(HasContainerName)))))))