[PATCH] Fix inline versioned namespace bootstrap
François Dumont
frs.dumont@gmail.com
Sat Aug 28 12:40:25 GMT 2021
On 28/08/21 12:49 pm, Jonathan Wakely wrote:
> On Sat, 28 Aug 2021 at 10:26, Jonathan Wakely <jwakely@redhat.com> wrote:
>> On Fri, 27 Aug 2021 at 22:17, Jonathan Wakely <jwakely@redhat.com> wrote:
>>> On Fri, 27 Aug 2021 at 21:58, François Dumont via Libstdc++
>>> <libstdc++@gcc.gnu.org> wrote:
>>>> Since std::allocator<void> is not specialized anymore in
>>>> _GLIBCXX_INLINE_VERSION mode _ExtPtr_allocator<void> specialization do
>>>> not compile
>>>>
>>>> because std::allocator<void> is incomplete.
>>> That doesn't look right ... it should be complete. This suggests there
>>> is a deeper problem, which I'll look into.
>> This is the correct fix:
>>
>> --- a/libstdc++-v3/include/bits/memoryfwd.h
>> +++ b/libstdc++-v3/include/bits/memoryfwd.h
>> @@ -63,8 +63,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> template<typename>
>> class allocator;
>>
>> +#if ! _GLIBCXX_INLINE_VERSION
>> template<>
>> class allocator<void>;
>> +#endif
>>
>> #if __cplusplus >= 201103L
>> /// Declare uses_allocator so it can be specialized in `<queue>` etc.
>
> Actually, the allocator<void> specialization is still needed for
> pre-C++20 with the versioned namespace, and that means there's the
> same trivial default ctor ABI concern for the versioned namespace. I'm
> testing a fix now, but it might not be committed until I'm back at
> work on Tuesday.
>
Ok, there's no rush.
Note that I noticed that because I am working on PR 83077 to allow sso
string in versioned namespace.
My plan is to make the sso string the only std::string implementation in
versioned namespace.
Now that I saw your RFC about dropping C++98 support for versioned
namespace I think my approach fall into this. But I also think that this
RFC will be approved so it should be fine unless you have another concern.
François
More information about the Libstdc++
mailing list