[libcxx-commits] [libcxx] [libc++] Implement P2077R3: Heterogeneous erasure overloads for associative containers (PR #174680)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Fri Aug 14 05:24:22 PDT 2026


================
@@ -1332,6 +1344,18 @@ public:
   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 iterator erase(const_iterator __f, const_iterator __l) {
     return __tree_.erase(__f.__i_, __l.__i_);
   }
+
+#  if _LIBCPP_STD_VER >= 23
+
+  template <class _Kp>
+    requires(__is_transparent_v<_Compare> && !is_convertible_v<_Kp &&, iterator> &&
+             !is_convertible_v<_Kp &&, const_iterator>)
----------------
philnik777 wrote:

```suggestion
    requires(__is_transparent_v<_Compare> && !is_convertible_v<_Kp, iterator> &&
             !is_convertible_v<_Kp, const_iterator>)
```
I don't think you need those.

More generally, I wonder whether we want to introduce an "is not convertible to iterators" concept. Not sure it's worth it.

https://github.com/llvm/llvm-project/pull/174680


More information about the libcxx-commits mailing list