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