Skip to content

Commit 9d45d1a

Browse files
Update templatesimplifier.cpp
1 parent bd5ff18 commit 9d45d1a

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

lib/templatesimplifier.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2104,8 +2104,6 @@ void TemplateSimplifier::expandTemplate(
21042104
Token * const beforeTypeToken = mTokenList.back();
21052105
bool pointerType = false;
21062106
const bool isVariadicTemplateArg = templateDeclaration.isVariadic() && itype + 1 == typeParametersInDeclaration.size();
2107-
if (isVariadicTemplateArg && mTypesUsedInTemplateInstantiation.size() > 1 && !Token::Match(tok3->next(), "...|<"))
2108-
continue;
21092107
if (isVariadicTemplateArg && Token::Match(tok3, "%name% ... %name%"))
21102108
tok3 = tok3->tokAt(2);
21112109
if (!isVariadicTemplateArg && copy && Token::Match(mTypesUsedInTemplateInstantiation[itype].token(), "%num% ,|>|>>") &&
@@ -2130,6 +2128,7 @@ void TemplateSimplifier::expandTemplate(
21302128
}
21312129
}
21322130
const std::string endStr(isVariadicTemplateArg ? ">" : ",>");
2131+
Token* begPar = nullptr;
21332132
for (Token *typetok = mTypesUsedInTemplateInstantiation[itype].token();
21342133
typetok && (typeindentlevel > 0 || endStr.find(typetok->str()[0]) == std::string::npos);
21352134
typetok = typetok->next()) {
@@ -2153,6 +2152,10 @@ void TemplateSimplifier::expandTemplate(
21532152
--typeindentlevel;
21542153
Token *back;
21552154
if (copy) {
2155+
if (isVariadicTemplateArg && typetok == mTypesUsedInTemplateInstantiation[itype].token() && typetok->isLiteral()) {
2156+
mTokenList.addtoken("(", mTokenList.back());
2157+
begPar = mTokenList.back();
2158+
}
21562159
mTokenList.addtoken(typetok, tok3);
21572160
back = mTokenList.back();
21582161
} else
@@ -2181,6 +2184,10 @@ void TemplateSimplifier::expandTemplate(
21812184
if (copy)
21822185
back->templateArgFrom(typetok);
21832186
}
2187+
if (begPar) {
2188+
mTokenList.addtoken(")", mTokenList.back());
2189+
Token::createMutualLinks(begPar, mTokenList.back());
2190+
}
21842191
if (pointerType && Token::simpleMatch(beforeTypeToken, "const")) {
21852192
mTokenList.addtoken(beforeTypeToken);
21862193
beforeTypeToken->deleteThis();

0 commit comments

Comments
 (0)