lime added a comment.

I'm wondering whether classes like `TemplateArgumentLoc` could refer to the 
template head of the `TemplateArgument`, so the comparison of parameter 
mappings could be modified, and then the refered variable could be accepted.



================
Comment at: clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp:43
+
+S4<X> s41;
+S4<Y> s42;
----------------
This variable was rejected after rebasing the patch on D126907. The reason is 
that the atomic constraint generated from `S4` is not considered to subsume the 
one generated from `X`. And the difference between two atomic constraints is 
mainly the template arguments. If the concept `C` was like `template <typename> 
concept C = true`, this variable would be accepted.

A reasonable behavior might be either accepting the variable regardless of 
whether the constraint expression depends on template arguments, or rejecting 
the variable as the template heads of `S4` and `X` are not equivalent. Both GCC 
and MSVC accept the variable.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D134128

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

Reply via email to