On Thu, 4 Dec 2025 at 11:24, Tomasz Kamiński <[email protected]> wrote:
>
> The fixes regression from r16-5845-g8a2e6590cc4a2f that added an move
> assignment operator to the _Safe_node_sequence, and made the class both
> non move and copy constructible (copy is deleted, move is not declared).
> In consequence debug version of node containers, that define they copy
> and move as defaulted, and inherit from above, have deleted copy and moves.
>
> libstdc++-v3/ChangeLog:
>
>         * include/debug/safe_sequence.h
>         (_Safe_node_sequence::_Safe_node_sequence): Define as defaulted.
> ---
> This does not fix debug mode for unorderd containers (a lot of issue
> there), but I think it sitll an improvment.
>
> Testing on x86_64-linux. list, map, set seem to be fixed. OK for trunk?

OK

>
>  libstdc++-v3/include/debug/safe_sequence.h | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/libstdc++-v3/include/debug/safe_sequence.h 
> b/libstdc++-v3/include/debug/safe_sequence.h
> index c908d1e47a9..9120044052a 100644
> --- a/libstdc++-v3/include/debug/safe_sequence.h
> +++ b/libstdc++-v3/include/debug/safe_sequence.h
> @@ -136,14 +136,11 @@ namespace __gnu_debug
>      : public _Safe_sequence<_Sequence>
>      {
>      public:
> -      _GLIBCXX20_CONSTEXPR _Safe_node_sequence&
> -      operator=(const _Safe_node_sequence&) _GLIBCXX_NOEXCEPT
> -      {
> -       _M_invalidate_all();
> -       return *this;
> -      }
> -
>  #if __cplusplus >= 201103L
> +    _Safe_node_sequence() = default;
> +    _Safe_node_sequence(_Safe_node_sequence&&) = default;
> +    _Safe_node_sequence(_Safe_node_sequence const&) = default;
> +
>      _GLIBCXX20_CONSTEXPR _Safe_node_sequence&
>      operator=(_Safe_node_sequence&& __x) noexcept
>      {
> @@ -153,6 +150,13 @@ namespace __gnu_debug
>      }
>  #endif
>
> +    _GLIBCXX20_CONSTEXPR _Safe_node_sequence&
> +    operator=(const _Safe_node_sequence&) _GLIBCXX_NOEXCEPT
> +    {
> +      _M_invalidate_all();
> +      return *this;
> +    }
> +
>      protected:
>        _GLIBCXX20_CONSTEXPR void
>        _M_invalidate_all() const
> --
> 2.52.0
>

Reply via email to