Fix std::byte namespace declaration
François Dumont
frs.dumont@gmail.com
Tue Oct 23 05:07:00 GMT 2018
On 10/18/2018 10:34 PM, Jonathan Wakely wrote:
> On 18/10/18 22:12 +0200, François Dumont wrote:
>> Current build of libstdc++ with
>> --enable-symvers=gnu-versioned-namespace fails (at least under Linux)
>> because of:
>>
>> In file included from
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/memory_resource:39,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â from
>> ../../../../../git/libstdc++-v3/src/c++17/memory_resource.cc:25:
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/cstddef:71:59:
>> error: la référence à « byte » est ambiguë
>> Â Â 71 |Â Â template<> struct __byte_operand<bool> { using __type =
>> byte; };
>> Â Â Â Â Â | ^~~~
>> In file included from
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:61,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â from
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/memory:62,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â from
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/memory_resource:37,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â from
>> ../../../../../git/libstdc++-v3/src/c++17/memory_resource.cc:25:
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/cpp_type_traits.h:395:30:
>> note: les candidats sont : « enum class std::__8::byte »
>> Â 395 |Â Â enum class byte : unsigned char;
>> Â Â Â Â Â |Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ^~~~
>> In file included from
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/memory_resource:39,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â from
>> ../../../../../git/libstdc++-v3/src/c++17/memory_resource.cc:25:
>> /home/fdt/dev/gcc/build_versioned_ns/x86_64-pc-linux-gnu/libstdc++-v3/include/cstddef:68:14:
>> note:                     « enum class std::byte »
>> Â Â 68 |Â Â enum class byte : unsigned char {};
>> Â Â Â Â Â |Â Â Â Â Â Â Â Â Â Â Â Â Â ^~~~
>>
>> I think the issue if that std::byte declaration in cpp_type_traits.h
>> has been done in versioned namespace, so the attached patch.
>
> I think the definitions in <cstddef> should use the versioned
> namespace macros. Then <bits/cpp_type_traits.h> would be correct.
I thought cstddef was some kind of generated file.
I eventually put all its content in versioned namespace.
   * include/c_global/cstddef: Add versioned namespace.
Build successful with the patch, still tests to run. Ok if successful ?
François
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cstddef.patch
Type: text/x-patch
Size: 594 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20181023/09a0c4ae/attachment.bin>
More information about the Libstdc++
mailing list