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

Reply via email to