@@ -8064,32 +8064,20 @@ bool Sema::CheckNonDependentConversions(
80648064 // A speculative workaround for self-dependent constraint bugs that manifest
80658065 // after CWG2369.
80668066 // FIXME: Add references to the standard once P3606 is adopted.
8067- auto MaybeInvolveUserDefinedConversion = [&](QualType ParmType ,
8067+ auto MaybeInvolveUserDefinedConversion = [&](QualType ParamType ,
80688068 QualType ArgType) {
8069- ParmType = ParmType .getNonReferenceType();
8069+ ParamType = ParamType .getNonReferenceType();
80708070 ArgType = ArgType.getNonReferenceType();
8071- bool PointerConv = ParmType ->isPointerType() && ArgType->isPointerType();
8071+ bool PointerConv = ParamType ->isPointerType() && ArgType->isPointerType();
80728072 if (PointerConv) {
8073- ParmType = ParmType ->getPointeeType();
8073+ ParamType = ParamType ->getPointeeType();
80748074 ArgType = ArgType->getPointeeType();
80758075 }
80768076
8077- if (auto *RT = ParmType ->getAs<RecordType>())
8077+ if (auto *RT = ParamType ->getAs<RecordType>())
80788078 if (auto *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
8079- RD && RD->hasDefinition()) {
8080- if (llvm::any_of(LookupConstructors(RD), [](NamedDecl *ND) {
8081- auto Info = getConstructorInfo(ND);
8082- if (!Info)
8083- return false;
8084- CXXConstructorDecl *Ctor = Info.Constructor;
8085- /// isConvertingConstructor takes copy/move constructors into
8086- /// account!
8087- return !Ctor->isCopyOrMoveConstructor() &&
8088- Ctor->isConvertingConstructor(
8089- /*AllowExplicit=*/true);
8090- }))
8091- return true;
8092- }
8079+ RD && RD->hasDefinition() && !RD->isAggregate())
8080+ return true;
80938081
80948082 if (auto *RT = ArgType->getAs<RecordType>())
80958083 if (auto *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
0 commit comments