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

Reply via email to