Hi! 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. Anyway, ok for trunk? 2025-08-02 Jakub Jelinek <ja...@redhat.com> * src/c++23/std.cc.in (std::owner_equal, std::owner_hash): Export. --- libstdc++-v3/src/c++23/std.cc.in.jj 2025-07-27 17:19:23.683127026 +0200 +++ libstdc++-v3/src/c++23/std.cc.in 2025-08-02 20:50:48.301748803 +0200 @@ -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> Jakub