@@ -44,13 +44,12 @@ using namespace clang;
44
44
// TemplateParameterList Implementation
45
45
// ===----------------------------------------------------------------------===//
46
46
47
- namespace {
48
47
template <class TemplateParam >
49
- bool DefaultArgumentContainsUnexpandedPack (const TemplateParam &P) {
48
+ static bool
49
+ DefaultTemplateArgumentContainsUnexpandedPack (const TemplateParam &P) {
50
50
return P.hasDefaultArgument () &&
51
51
P.getDefaultArgument ().getArgument ().containsUnexpandedParameterPack ();
52
52
}
53
- } // namespace
54
53
55
54
TemplateParameterList::TemplateParameterList (const ASTContext& C,
56
55
SourceLocation TemplateLoc,
@@ -69,18 +68,18 @@ TemplateParameterList::TemplateParameterList(const ASTContext& C,
69
68
bool IsPack = P->isTemplateParameterPack ();
70
69
if (const auto *NTTP = dyn_cast<NonTypeTemplateParmDecl>(P)) {
71
70
if (!IsPack && (NTTP->getType ()->containsUnexpandedParameterPack () ||
72
- DefaultArgumentContainsUnexpandedPack (*NTTP)))
71
+ DefaultTemplateArgumentContainsUnexpandedPack (*NTTP)))
73
72
ContainsUnexpandedParameterPack = true ;
74
73
if (NTTP->hasPlaceholderTypeConstraint ())
75
74
HasConstrainedParameters = true ;
76
75
} else if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(P)) {
77
76
if (!IsPack &&
78
77
(TTP->getTemplateParameters ()->containsUnexpandedParameterPack () ||
79
- DefaultArgumentContainsUnexpandedPack (*TTP))) {
78
+ DefaultTemplateArgumentContainsUnexpandedPack (*TTP))) {
80
79
ContainsUnexpandedParameterPack = true ;
81
80
}
82
81
} else if (const auto *TTP = dyn_cast<TemplateTypeParmDecl>(P)) {
83
- if (!IsPack && DefaultArgumentContainsUnexpandedPack (*TTP)) {
82
+ if (!IsPack && DefaultTemplateArgumentContainsUnexpandedPack (*TTP)) {
84
83
ContainsUnexpandedParameterPack = true ;
85
84
} else if (const TypeConstraint *TC = TTP->getTypeConstraint ();
86
85
TC && TC->getImmediatelyDeclaredConstraint ()
0 commit comments