diff --git a/lib/checkfunctions.cpp b/lib/checkfunctions.cpp index bd18f6b98..c5ee392c6 100644 --- a/lib/checkfunctions.cpp +++ b/lib/checkfunctions.cpp @@ -310,6 +310,8 @@ void CheckFunctions::checkMissingReturn() continue; if (Token::Match(function->retDef, "%name% (") && function->retDef->isUpperCaseName()) continue; + if (mTokenizer->isCPP() && Token::Match(function->retDef, "std :: enable_if|enable_if_t")) + continue; if (Function::returnsVoid(function, true)) continue; const Token *errorToken = checkMissingReturnScope(scope->bodyEnd, mSettings->library); diff --git a/test/testfunctions.cpp b/test/testfunctions.cpp index 9d0d4ee49..0e3606c6b 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -1725,6 +1725,9 @@ private: ASSERT_EQUALS("[test.cpp:2]: (error) Found a exit path from function with non-void return type that has missing return statement\n" "[test.cpp:10]: (error) Found a exit path from function with non-void return type that has missing return statement\n", errout.str()); + + check("std::enable_if_t f() {}"); // #11171 + ASSERT_EQUALS("", errout.str()); } // NRVO check