[PATCH] D110641: Implement P0857R0 -Part B: requires clause for template-template params

Corentin Jabot via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 8 09:24:37 PDT 2021


cor3ntin added inline comments.


================
Comment at: clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp:60-62
+  // A naive individual might expect the following to all fail concept checking,
+  // but there does not seem to be any requirement to check these in the
+  // standard, and none of the other implementations do so either.
----------------
erichkeane wrote:
> cor3ntin wrote:
> > cor3ntin wrote:
> > > erichkeane wrote:
> > > > aaron.ballman wrote:
> > > > > I agree that none of the other implementations seems to be checking constraints here, but I would have guessed that https://eel.is/c++draft/temp.arg.template#3 was what would trigger checking the constraints here (the `and for template template-parameters, each of their corresponding template-parameters matches, recursively.` bit, specifically).
> > > > > 
> > > > > Usually the answer to "Am I misreading the standard or are these three implementations all wrong in the same way?" is "I misread the standard.", but I'd appreciate some confirmation here. :-)
> > > > >>Usually the answer to "Am I misreading the standard or are these three implementations all wrong in the same way?" is "I misread the standard."
> > > > 
> > > > This is typically _MY_ response to this as well, so I was hoping @rsmith or @hubert.reinterpretcast could tell me the answer here (and perhaps help write a Core issue if the implementations are all 'right').
> > > I've spent the last hour trying to come up with scenarios where GCC does something interesting here, or where there would be a use for this here, but I have nothing.
> > I am a bit confused by GCC https://godbolt.org/z/TTrP81jjx 
> Huh.... is this some level of the subsumes check that needs to happen?  Though you show that the 'same constraint name + more info' thing doesn't work?  I'm very confused...
My current reading of the tea leaves (with no confidence whatsoever) is that the require clauses should match - aka be exactly the same.
And in the last case, maybe GCC has a bug where it fails to do the check if the template argument has no require clause whatsoever.
Maybe?


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

https://reviews.llvm.org/D110641



More information about the cfe-commits mailing list