On Sat, 2 Aug 2025, 21:06 Jakub Jelinek, <ja...@redhat.com> wrote:

> 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?
>

OK, thanks



> 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
>
>

Reply via email to