erichkeane added a comment.

Ok, Aaron and I are pretty confused here I think (based on offline 
discussions), so I'm hoping for some guidance.

`ParseTemplateTemplateParameter` does all the work to parse a template-template 
parameter, then calls `ActOnTemplateTemplateParameter`, which handles adding 
the top-level name to the scope (as well as warning if the params list is 0).

Additionally, we noticed that:

`template<template<typename T> class C = std::enable_if_t<T::value>> struct 
s{};`

Is illegal in all compilers, `T` is not available in the `enable_if_t` call.  
This makes a lot of sense to me, since the `T` is essentially worthless: It can 
never be matched, it never gets a concrete type, etc.

However, the test failure above does the equivilant of:

`template<template<typename T> requires T::value class C> struct s{};`

I note that MSVC and GCC accept this (no idea about EDG).  However, this seems 
worthless/useless for the same reason.  I guess it somewhat makes sense that 
the requires clause associated with the 
template-template-parameter-parameter-list should have access to names from the 
list, but they are still seemingly worthless to me.

My expectation is that I could implement this by introducing a new `Scope` that 
contains all the names of the template-template-parameter-list and goes out of 
scope as soon as we're done with the `requires` clause.  It seems strange to do 
so (and ends up having an `ActOnTemplateTemplateParameterParameterList` for 
this purpose, plus some level of 'pop-scope'), but seems consistent with the 
other compilers?

I guess what I'm saying is in addition to the other questions raised above 
regarding whether these requires clauses are useful AT ALL, is that we likely 
require guidance to finish implementing this paper


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110641/new/

https://reviews.llvm.org/D110641

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to