cor3ntin wrote: > I don't quite get what is happening here yet, can you give a summary of what > is being accomplished, and how you're doing so?
Let me try to see if I can enlighten you a bit. P2841 very simply extends the notion of template template parameters to variable templates and concepts (which are templates). Most of the wording complexity in P2841 deals with subsumption which is not implemented in this patch. So, what does having new kindd of template template parameters imply? - `TemplateTemplateParmDecl` gains a kind ( modeled with `TemplateNameKind`) - The decl a ConceptReference references can be a `TemplateTemplateParmDecl` - more generally, all the places a `ConceptDecl` can be used, so can a `TemplateTemplateParmDecl`. - so all these places now take a `NamedDecl`. - A template-id used as template argument can be a variable template or a concept, so `OverloadExpr` and `UnresolvedLookupExpr` have some new queries to deal with that ( in particular because concept template parameter can be used as type constraints) - Because concepts are not fully substituted, there is new code to handle concept template parameter instantiation, although some/all of that should be replaced by #141776 - Because these new types of template can be deduced in the same way non-type (constant using the new terminology) template parameters can, `NonTypeOrVarTemplateParmDecl` is used in SemaTemplateDeduction to model either of these things. I'm happy to answer more specific questions! https://github.com/llvm/llvm-project/pull/150823 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits