https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97484
Bug ID: 97484
Summary: typedef conflict for "byte" in GCC11 for MinGW-w64
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: brechtsanders at users dot sourceforge.net
Target Milestone: ---
I just built GCC11 snapshot 20201011 for the MinGW-w64 platform and noticed
that some things won't build with it because "byte" now has conflicting
definitions.
Windows seems to already define this in rpcndr.h, which is included from
windows.h.
But it's also defined in C++' cpp_type_traits.
The errors below are from an attempt to compile Ninja with GCC11 snapshot
20201011.
These issues were not present with GCC 11 or lower.
In file included from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\wtypes.h:8,
from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\winscard.h:10,
from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\windows.h:97,
from .\src\disk_interface.cc:27:
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\rpcndr.h:64:11: error:
reference to 'byte' is ambiguous
64 | typedef byte cs_byte;
| ^~~~
In file included from
d:\prog\winlibs32_stage\mingw32\include\c++\11.0.0\bits\stl_algobase.h:61,
from
d:\prog\winlibs32_stage\mingw32\include\c++\11.0.0\bits\stl_tree.h:63,
from
d:\prog\winlibs32_stage\mingw32\include\c++\11.0.0\map:60,
from .\src\disk_interface.h:18,
from .\src\disk_interface.cc:15:
d:\prog\winlibs32_stage\mingw32\include\c++\11.0.0\bits\cpp_type_traits.h:404:30:
note: candidates are: 'enum class std::byte'
404 | enum class byte : unsigned char;
| ^~~~
In file included from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\wtypes.h:8,
from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\winscard.h:10,
from
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\windows.h:97,
from .\src\disk_interface.cc:27:
d:\prog\winlibs32_stage\mingw32\i686-w64-mingw32\include\rpcndr.h:63:25: note:
'typedef unsigned char byte'
63 | typedef unsigned char byte;
| ^~~~