Generalize vector/deque ctor checks to work with MSVCRT

Change-Id: I2d493a36b8c2e3abe69964c04b46f08d67ef8a48
This commit is contained in:
Stephan Bergmann 2016-12-22 09:23:19 +01:00
parent 4a591d74a7
commit 1dc43e24b3

View File

@ -178,12 +178,13 @@ bool BadVectorInit::VisitCXXConstructExpr(const CXXConstructExpr* expr)
if (aParentName.find("vector") == string::npos && aParentName.find("deque") == string::npos)
return true;
// ignore the copy constructor
// ignore the copy/move constructors, and those taking an initializer_list
// etc.:
if (consDecl->isCopyConstructor() || consDecl->isMoveConstructor())
return true;
const ParmVarDecl* pParam = consDecl->getParamDecl(0);
std::string aParam1 = pParam->getOriginalType().getAsString();
if (aParam1.find("vector") != string::npos
|| aParam1.find("deque") != string::npos
|| aParam1.find("initializer_list") != string::npos
if (aParam1.find("initializer_list") != string::npos
|| aParam1.find("iterator") != string::npos)
return true;