Index: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -449,6 +449,9 @@ // Remove any bases that were explicitly written in the initializer list. if (Ctor) { + if (Ctor->isImplicit()) + return; + for (const CXXCtorInitializer *Init : Ctor->inits()) { if (Init->isBaseInitializer() && Init->isWritten()) BasesToInit.erase(Init->getBaseClass()->getAsCXXRecordDecl()); Index: clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp +++ clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-type-member-init.cpp @@ -473,3 +473,16 @@ unsigned F : 5; unsigned G : 5; }; + +struct NegativeImplicitInheritedCtorBase { + NegativeImplicitInheritedCtorBase(unsigned F) : F(F) {} + unsigned F; +}; + +struct NegativeImplicitInheritedCtor : NegativeImplicitInheritedCtorBase { + using NegativeImplicitInheritedCtorBase::NegativeImplicitInheritedCtorBase; +}; + +void Bug33557() { + NegativeImplicitInheritedCtor I(5); +}