diff --git a/lib/checkfunctions.cpp b/lib/checkfunctions.cpp index 2811658cc..3076e6d72 100644 --- a/lib/checkfunctions.cpp +++ b/lib/checkfunctions.cpp @@ -156,6 +156,10 @@ void CheckFunctions::checkIgnoredReturnValue() for (std::size_t i = 0; i < functions; ++i) { const Scope * scope = symbolDatabase->functionScopes[i]; for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { + // c++11 initialization + if (Token::Match(tok, "%var% {")) + tok = tok->linkAt(1); + if (tok->varId() || !Token::Match(tok, "%name% (") || tok->strAt(-1) == ".") continue; diff --git a/test/testfunctions.cpp b/test/testfunctions.cpp index 653ce3290..4cd73c18c 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -894,6 +894,13 @@ private: " void * res{malloc(size)};\n" "}"); ASSERT_EQUALS("", errout.str()); + + // #7447 + check("void foo() {\n" + " int x{mystrcmp(a,b)};\n" + "}", "test.cpp", &settings2); + ASSERT_EQUALS("", errout.str()); + } };