================
@@ -1216,10 +1308,225 @@ void DeclareImplicitDeductionGuidesForTypeAlias(
             ->getDeductionCandidateKind() == DeductionCandidate::Aggregate)
       continue;
 
-    BuildDeductionGuideForTypeAlias(SemaRef, AliasTemplate, F, Loc);
+    BuildDeductionGuideForTypeAlias(SemaRef, AliasTemplate, F, Loc,
+                                    DeducingTemplate, DerivedClassMapperType);
   }
 }
 
+void DeclareImplicitDeductionGuidesFromInheritedConstructors(
+    Sema &SemaRef, TemplateDecl *Template, ClassTemplateDecl *Pattern,
+    TypeSourceInfo *BaseTSI, unsigned BaseIdx) {
+  auto &Context = SemaRef.Context;
+  DeclContext *DC = Template->getDeclContext();
+  const auto *BaseTST = 
BaseTSI->getType()->getAs<TemplateSpecializationType>();
+  if (!BaseTST)
+    return;
+  SourceLocation BaseLoc = BaseTSI->getTypeLoc().getBeginLoc();
+
+  TemplateDecl *BaseTD = BaseTST->getTemplateName().getAsTemplateDecl();
+  if (!BaseTD)
+    return;
+
+  // Subsitute any parameters with default arguments not present in the base,
+  // since partial specializations cannot have default parameters
----------------
hokein wrote:

Thanks a lot for the explanations and clarifications. 

> along with the transformed alias deduction guides. With these in place, that 
> deduction will fail, because it is not possible to instantiate the partial 
> specialization of CC<R> for the deduction guide return type R (which is 
> Base<InBase> in practice).
> 
> The reason this substitution fails is because NotInBase cannot be determined 
> from Base<InBase>. Since partial specializations cannot have default 
> arguments, the fact that NotInBase is defaulted in the derived class is not 
> respected.

This makes sense. And it seems like another issue in the standard, and we 
should report to the CWG as well.

One alternative is to omit this case until the CWG addresses it. If doing so 
significantly simplifies the implementation, I'd lean towards that approach. 
However, if the current solution is more practical without much added 
complexity, I’m fine with proceeding as is.


https://github.com/llvm/llvm-project/pull/98788
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to