From: Nathan Myers Date: Fri, 6 Feb 2026 08:56:42 +0000 (-0500) Subject: libstdc++: fix C++17 regression in concept __heterogeneous_key (2nd) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae04c1afd1526a6d468777809c50a9d02816ded9;p=thirdparty%2Fgcc.git libstdc++: fix C++17 regression in concept __heterogeneous_key (2nd) 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 --- diff --git a/libstdc++-v3/include/bits/stl_function.h b/libstdc++-v3/include/bits/stl_function.h index 657f40bca2e..1312564216b 100644 --- a/libstdc++-v3/include/bits/stl_function.h +++ b/libstdc++-v3/include/bits/stl_function.h @@ -1525,7 +1525,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif #endif -#ifdef __cpp_concepts +#ifdef __glibcxx_associative_heterogeneous_erasure template concept __not_container_iterator = (!is_convertible_v<_Kt&&, typename _Container::iterator> && @@ -1533,8 +1533,7 @@ template template concept __heterogeneous_key = - (!is_same_v::type>) && + (!is_same_v>) && __not_container_iterator<_Kt, _Container>; #endif