================
@@ -470,6 +470,37 @@ features cannot lower the translation-unit ABI level;
 
 - Fixed an issue where `__typeof__` incorrectly rejected cv-qualified function 
types.
 
+- Class template argument deduction through an alias template now works when
+  the right-hand side of the alias names another alias template that cannot
+  have deduction guides of its own, such as an identity alias
+  (`template <class T> using Identity = T;`). The deduction guides are now
+  derived from the first template in the chain that can have them, per the
+  equivalence rule of `[temp.alias]p2`, matching GCC. (#GH125821)
+
+- Class template argument deduction through an alias template now works when
+  a template parameter of the alias only appears in the synthesized deduction
+  guide through default template arguments, such as `Key` in
+  `template <class Key, class Hash = std::hash<Key>> using MySet = 
std::unordered_set<Key, Hash>;`
+  when deducing `MySet s(first, last);`. Such a template parameter now gets a
+  default template argument deduced from the return type of the underlying
+  deduction guide (here `Key` becomes the iterator's value type), instead of
+  being undeducible.
----------------
zyn0217 wrote:

So you asked me to read those issues, while you don't seem to have read it nor 
your code:

If you look at 
https://github.com/llvm/llvm-project/issues/139442#issuecomment-3072613415, 
which is one of the issue you're trying to close:

It is a non-conforming extension implemented by GCC, and I don't think it's 
correct to resolve it at the CTAD side.

That's why I'm saying this PR is trying to workaround anything and mimic GCC's 
behavior, and what's important is that we need some justification and 
high-level design thoughts before we decide to take any actions.

https://github.com/llvm/llvm-project/pull/193056
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to