diff --git a/lib/templatesimplifier.cpp b/lib/templatesimplifier.cpp index 6fc4eaa8408..5b10539e9a1 100644 --- a/lib/templatesimplifier.cpp +++ b/lib/templatesimplifier.cpp @@ -2221,7 +2221,7 @@ void TemplateSimplifier::expandTemplate( mTokenList.addtoken(tokSemicolon, tokSemicolon->linenr(), tokSemicolon->column(), tokSemicolon->fileIndex()); } brackets.pop(); - if (brackets.empty() && !Token::Match(tok3, "} >|,|{|%cop%")) { + if (brackets.empty() && !Token::Match(tok3, "} >|,|{")) { inTemplateDefinition = false; break; } diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index a9c311dc65d..2b1412a9978 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -6765,6 +6765,13 @@ class TestTokenizer : public TestFixture { // #9301 ASSERT_NO_THROW(tokenizeAndStringify("template constexpr char x[] = \"\";\n" "template <> constexpr char x[] = \"\";\n")); + + // #10951 + ASSERT_NO_THROW(tokenizeAndStringify("struct a {\n" + " template static void b() {}\n" + " ~a();\n" + "};\n" + "void d() { a::b(); }\n")); } void checkNamespaces() {