ChuanqiXu added a comment.

In D119544#3527556 <https://reviews.llvm.org/D119544#3527556>, @erichkeane 
wrote:

> In D119544#3526810 <https://reviews.llvm.org/D119544#3526810>, @ChuanqiXu 
> wrote:
>
>> In D119544#3494281 <https://reviews.llvm.org/D119544#3494281>, @erichkeane 
>> wrote:
>>
>>> Updated to include the fix for the libcxx issue, which was that we weren't 
>>> properly differentiating between 'friend' functions based on concepts.  
>>> I'll likely be submitting this early monday or so, but would like to give 
>>> @ChuanqiXu  a chance to check out the changes.
>>>
>>> This is the same as my 'last' committed version of this patch, plus the 
>>> changes I split out into here for easier review: 
>>> https://reviews.llvm.org/D125020
>>
>> Sorry that I missed the ping. The change in that revision looks good to me.
>>
>>> I THINK what we want to do instead of trying to 're setup' the template 
>>> arguments (and instead of just 'keeping' the uninstantiated expression) is 
>>> to run some level of 'tree-transform' that updates the names of the 
>>> template parameters (including depths/etc), but without doing lookup. This 
>>> I think would fix our 'friend function' issue, and our 'comparing 
>>> constraints' stuff work correctly as well (rather than storing an 
>>> instantiated version, but not reusing it except for comparing them).
>>
>> I agree this should be a better direction.
>
> I actually got a response from Richard who seems to be more in favor of the 
> solution I tried initially (the one in this patch!).  The problems I have 
> with it I think get solved by the 'friend function' rules that I pasted 
> above, so I THINK I can fix those and be ok.  I'll still need SOME level of 
> tree-transform, but only to see if it depends on the enclosing template.

Great!

>> I agree this one should be fine. I think we could fix the problem by making 
>> non-template function inside a template class to be a dependent type. Like 
>> this one is accepted: >https://godbolt.org/z/MorzcqE1a
>> This bug might not be horrible since few developer would write friend 
>> function definition which doesn't touch the enclosing class.
>
> Yeah, that is a really strange one.  I don't think we can make it dependent 
> as then it wouldn't be callable when fully instantiate-able.  I don't have a 
> good idea how to make this work in the AST though, and might end up leaving 
> it as a 'fixme'.  As you said, I think you're right that this is a very small 
> bug-vector.

Yeah, my point is that this is not your fault. And we could fix the problem 
later when we have time since it is not hurry.


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

https://reviews.llvm.org/D119544

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

Reply via email to