]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Use RAII in <bits/stl_uninitialized.h>
authorJonathan Wakely <jwakely@redhat.com>
Thu, 20 Jun 2024 14:53:13 +0000 (15:53 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 5 Jul 2024 11:18:34 +0000 (12:18 +0100)
commit6025256d47b36fed455cc4f8dd4becf53208bbae
tree99bd47d94416f0980a4c4aac4ec02e243d333d57
parentde19b516edbf919d31e9d22fdbf6066342d904a2
libstdc++: Use RAII in <bits/stl_uninitialized.h>

This adds an _UninitDestroyGuard class template, similar to
ranges::_DestroyGuard used in <bits/ranges_uninitialized.h>. This allows
us to remove all the try-catch blocks and rethrows, because any required
cleanup gets done in the guard destructor.

libstdc++-v3/ChangeLog:

* include/bits/stl_uninitialized.h (_UninitDestroyGuard): New
class template and partial specialization.
(__do_uninit_copy, __do_uninit_fill, __do_uninit_fill_n)
(__uninitialized_copy_a, __uninitialized_fill_a)
(__uninitialized_fill_n_a, __uninitialized_copy_move)
(__uninitialized_move_copy, __uninitialized_fill_move)
(__uninitialized_move_fill, __uninitialized_default_1)
(__uninitialized_default_n_a, __uninitialized_default_novalue_1)
(__uninitialized_default_novalue_n_1, __uninitialized_copy_n)
(__uninitialized_copy_n_pair): Use it.
libstdc++-v3/include/bits/stl_uninitialized.h