vsavchenko added a comment.

In D104616#2829705 <https://reviews.llvm.org/D104616#2829705>, @RedDocMD wrote:

> The only method that I think can be realistically modelled is `==` (and thus 
> `!=`). If both the operands refer to the same `unique_ptr`, we know `==` 
> returns true. If they are not the same, the only way `==` can return true if 
> the two smart pointers were initialized from the //same// raw pointer. This 
> is of course a fatal bug in itself. So perhaps we can ignore this case and 
> only consider the first case.
> The ordering operators I guess can't be handled because there is no way to 
> statically tell in general the address of some value. We have the following 
> deductions, nevertheless, mathematically:
> Let `ptr1` and `ptr2` be two `std::unique_ptr` objects.
> If `(ptr1 == ptr2)` is true:
>
> - `ptr1 < ptr2` is false
> - `ptr1 > ptr2` is false
> - `ptr1 <= ptr2` is true
> - `ptr1 >= ptr2` is true
>
> If `(ptr1 == ptr2)` is false, we can't say anything really.

Sounds good to me!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104616

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

Reply via email to