]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Avoid using std::unique_ptr in <locale>
authorJonathan Wakely <jwakely@redhat.com>
Mon, 2 Aug 2021 16:12:52 +0000 (17:12 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 3 Aug 2021 14:06:56 +0000 (15:06 +0100)
commita1a2654cdc90e9aa561a0e853b4b1372892afb70
treea4671c2d44b4b3830afff81c757dbdfae7d487da
parent048039c49b96875144f67e7789fdea54abf7710b
libstdc++: Avoid using std::unique_ptr in <locale>

std::wstring_convert and std::wbuffer_convert types are not copyable or
movable, and store a plain pointer without a deleter. That means a much
simpler type that just uses delete in its destructor can be used instead
of std::unique_ptr.

That avoids including and parsing all of <bits/unique_ptr.h> in every
header that includes <locale>. It also avoids instantiating
unique_ptr<C> and std::tuple<C*, default_delete<C>> when the conversion
utilities are used.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/locale_conv.h (__detail::_Scoped_ptr): Define new
RAII class template.
(wstring_convert, wbuffer_convert): Use __detail::_Scoped_ptr
instead of unique_ptr.
libstdc++-v3/include/bits/locale_conv.h