Skip to content

Commit 03026c7

Browse files
Fix #11915 Assert failure in getTemplateNamePosition() (#5403)
1 parent ce78017 commit 03026c7

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

lib/templatesimplifier.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,8 +454,9 @@ unsigned int TemplateSimplifier::templateParameters(const Token *tok)
454454
if (level == 1)
455455
return numberOfParameters;
456456
level -= 2;
457-
} else if (tok->str() == "," && level == 0) {
458-
++numberOfParameters;
457+
} else if (tok->str() == ",") {
458+
if (level == 0)
459+
++numberOfParameters;
459460
tok = tok->next();
460461
continue;
461462
}

test/testsimplifytemplate.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5318,6 +5318,7 @@ class TestSimplifyTemplate : public TestFixture {
53185318
ASSERT_EQUALS(3U, templateParameters("template <class T, class... Args, class Tup = std::tuple<Args&&...>> void f() {}"));
53195319
ASSERT_EQUALS(3U, templateParameters("template <class T, class... Args, class Tup = std::tuple<Args*...>> void f() {}"));
53205320
ASSERT_EQUALS(1U, templateParameters("S<4 < sizeof(uintptr_t)> x;"));
5321+
ASSERT_EQUALS(2U, templateParameters("template <typename... Ts, typename = std::enable_if_t<std::is_same<Ts..., int>::value>> void g() {}")); // #11915
53215322
}
53225323

53235324
// Helper function to unit test TemplateSimplifier::getTemplateNamePosition

0 commit comments

Comments
 (0)