[PATCH] D119544: Deferred Concept Instantiation Implementation
Chuanqi Xu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 23 00:56:18 PDT 2022
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
More information about the cfe-commits
mailing list