]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Export std::owner_equal and std::owner_hash from std.cc
authorJakub Jelinek <jakub@redhat.com>
Sun, 3 Aug 2025 15:13:37 +0000 (17:13 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sun, 3 Aug 2025 15:15:20 +0000 (17:15 +0200)
I've tried compiling
  #include <bits/stdc++.h>
with -std=c++26 -fdump-lang-all
and
for i in `grep ^Class.std::[^_] *.C.001l.class | sed 's/^Class //;s/[< ].*$//' | sort -u | grep -v ::.*::`; do grep -q $i /usr/src/gcc/libstdc++-v3/src/c++23/std.cc.in || echo $i;
+done
This printed
std::auto_ptr
std::binary_function
std::owner_equal
std::owner_hash
std::unary_function
where auto_ptr, binary_function and unary_function have been removed in earlier
versions of C++ and owner_equal and owner_hash are missing.

The following patch adds them.

Wonder how to automatically discover other missing exports (like in PR121373
std::byteswap), maybe one could dig that stuff somehow from the raw
dump (look for identifiers in std namespace (and perhaps inlined namespaces
thereof at least) which don't start with underscore.

2025-08-03  Jakub Jelinek  <jakub@redhat.com>

* src/c++23/std.cc.in (std::owner_equal, std::owner_hash): Export.

libstdc++-v3/src/c++23/std.cc.in

index 9301ed90c00f005e88bd53790027c2e900cea0db..ec048f6f4f3afb600dba9b0dd34ba732c0f16a42 100644 (file)
@@ -1982,6 +1982,10 @@ export namespace std
   using std::polymorphic;
   namespace pmr { using std::pmr::polymorphic; }
 #endif
+#if __cpp_lib_smart_ptr_owner_equality
+  using std::owner_equal;
+  using std::owner_hash;
+#endif
 }
 
 // 20.4 <memory_resource>