[llvm] [STLExtras] Introduce bind_{first, last}, [not_]equal_to (PR #175056)
Jakub Kuderski via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 8 14:17:47 PST 2026
================
@@ -2157,6 +2157,32 @@ template <typename T> bool all_equal(std::initializer_list<T> Values) {
return all_equal<std::initializer_list<T>>(std::move(Values));
}
+template <typename RefT, typename PredT>
+auto bind_first(const RefT &Ref, const PredT &Pred) {
+ return [&](auto &&...Val) {
+ return Pred(Ref, std::forward<decltype(Val)>(Val)...);
----------------
kuhar wrote:
Capturing by ref my be a foot gun for temporaries, I think we may want to do something like this:
```suggestion
template <typename PredT, typename RefT>
auto bind_first(PredT Pred, RefT Ref) {
return [MyPred = std::move(Ref), MyRef = std::move(Ref)](auto &&...Val) {
return MyPred(MyRef, std::forward<decltype(Val)>(Val)...);
```
I'd also swap the order of arguments
https://github.com/llvm/llvm-project/pull/175056
More information about the llvm-commits
mailing list