@@ -429,21 +429,21 @@ std::set<std::string> TemplateSimplifier::expandSpecialized(Token *tokens)
429429 ostr << " " ;
430430 ostr << tok3->str ();
431431 }
432- if (!Token::simpleMatch (tok3, " > (" ))
432+ if (!Token::Match (tok3, " > (|{ " ))
433433 continue ;
434434 s = ostr.str ();
435435 }
436436
437437 // save search pattern..
438- const std::string pattern (s + " > ( " );
438+ const std::string pattern (s + " >" );
439439
440440 // remove spaces to create new name
441441 s.erase (std::remove (s.begin (), s.end (), ' ' ), s.end ());
442442 const std::string name (s + " >" );
443443 expandedtemplates.insert (name);
444444
445445 // Rename template..
446- Token::eraseTokens (tok2, Token::findsimplematch (tok2, " ( " ));
446+ Token::eraseTokens (tok2, Token::findsimplematch (tok2, " < " )-> findClosingBracket ()-> next ( ));
447447 tok2->str (name);
448448
449449 // delete the "template < >"
@@ -452,7 +452,7 @@ std::set<std::string> TemplateSimplifier::expandSpecialized(Token *tokens)
452452
453453 // Use this special template in the code..
454454 while (nullptr != (tok2 = const_cast <Token *>(Token::findmatch (tok2, pattern.c_str ())))) {
455- Token::eraseTokens (tok2, Token::findsimplematch (tok2, " ( " ));
455+ Token::eraseTokens (tok2, Token::findsimplematch (tok2, " < " )-> findClosingBracket ()-> next ( ));
456456 tok2->str (name);
457457 }
458458 }
@@ -700,7 +700,7 @@ int TemplateSimplifier::getTemplateNamePosition(const Token *tok)
700700{
701701 // get the position of the template name
702702 int namepos = 0 , starAmpPossiblePosition = 0 ;
703- if (Token::Match (tok, " > class|struct %type% {|:" ))
703+ if (Token::Match (tok, " > class|struct %type% {|:|< " ))
704704 namepos = 2 ;
705705 else if (Token::Match (tok, " > %type% *|&| %type% (" ))
706706 namepos = 2 ;
0 commit comments