diff --git a/lib/checkfunctions.cpp b/lib/checkfunctions.cpp index bd18f6b98c7..c5ee392c69d 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 9d0d4ee4998..0e3606c6b3c 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -1725,6 +1725,9 @@ class TestFunctions : public TestFixture { 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