The commit
3f7905550483408a2c4c5096a1adc8d7e863eb12 defined a
concept __heterogeneous_key using a name not defined in C++17.
This is fixed by guarding the definition behind a name defined
in C++23 the earliest Standard that uses the definition.
https://gcc.gnu.org/pipermail/gcc-patches/2026-February/707814.html
libstdc++-v3/ChangeLog
* include/bits/stl_function.h (concept __heterogeneous_key):
Guard with __glibcxx_associative_heterogeneous_erasure
#endif
#endif
-#ifdef __cpp_concepts
+#ifdef __glibcxx_associative_heterogeneous_erasure
template <typename _Kt, typename _Container>
concept __not_container_iterator =
(!is_convertible_v<_Kt&&, typename _Container::iterator> &&
template <typename _Kt, typename _Container>
concept __heterogeneous_key =
- (!is_same_v<typename _Container::key_type,
- typename remove_cvref<_Kt>::type>) &&
+ (!is_same_v<typename _Container::key_type, remove_cvref_t<_Kt>>) &&
__not_container_iterator<_Kt, _Container>;
#endif