ychen added a comment. In D111283#3783338 <https://reviews.llvm.org/D111283#3783338>, @mizvekov wrote:
> In D111283#3783250 <https://reviews.llvm.org/D111283#3783250>, @ychen wrote: > >> Hi @mizvekov , I noticed that deduction for partial ordering also inherits >> this new behavior. Do you think partial ordering could opt out of this, or >> is it better for partial ordering to deal with the new sugared types? > > I would expect partial ordering to be performed only using canonical types, > that type sugar should make no difference there. > > Note that previous to this patch, we would already produce sugar on > deduction, but the behavior with regards to deducing the same template > parameter from multiple places was pretty badly behaved: We would just keep > the sugar from the first deduction, and ignore any subsequent ones. That > meant that the deduction order had an effect on the result. With this patch, > deduction becomes order agnostic. I see. I think it is definitely a good thing. I'm still learning what the expected AST should look like during the partial ordering. > What kind of difference are you seeing? For template <typename...> struct A {}; template <class T> bool foo(A<T>); template <class T, class... Args> bool foo(A<T, Args...>); template <class Tuple> bool bar() { return foo(Tuple{}); } `A<T>` is currently modeled as ElaboratedType. It was `TemplateSpecializationType` before. Reading comments for `ElaboratedType`, it looks like sugar type might not be needed here? ElaboratedType 0xd79c8f0 'A<T>' sugar dependent `-TemplateSpecializationType 0xd79c8b0 'A<T>' dependent A `-TemplateArgument type 'T' `-TemplateTypeParmType 0xd79c7f0 'T' dependent depth 0 index 0 `-TemplateTypeParm 0xd79c768 'T' Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D111283/new/ https://reviews.llvm.org/D111283 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits