hokein wrote:

It feels like the current direction & discussion is expanding into a broader 
problem space beyond the specific issue this PR aims to address. We have two 
major problems which seem to be orthogonal:

1. **avoiding code duplication** – specifically, reducing the number of 
function overloads required due to `IsViewType<T>`.  
2. **supporting variadic templates** – handling cases like 
`emplace_back(Args...)`.  

The prototype here primarily targets problem (1). While `lifetimebound_like` 
seems like a reasonable solution, if I understand correctly, it mainly 
addresses problem (2).  

As the name indicates, `lifetimebound_like` is a variant of `lifetimebound`, 
there are some inconsistencies:

- `lifetimebound` applies to the `*this` object when placed after the function 
type. However, `lifetimebound_like` does not follow the same rule;
- `lifetimebound` cannot be placed after standalone function (since there is no 
`*this` object), whereas `lifetimebound_like` can;

These differences might cause confusion for users. While they may not be a 
major issue, perhaps a more precise name could help clarify the intended 
behavior.  

I'm starting to feel that we’re introducing more and more builtins to address a 
specific issue, which doesn’t seem ideal or scalable. That said, I don’t have a 
better alternative at the moment. Problem (2) is a known limitation of the 
current `lifetimebound` annotation -- supporting it would be great, but if we 
don’t have a solid and simple solution, we can always choose to do nothing and 
accept the limitation.

https://github.com/llvm/llvm-project/pull/125520
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to