Bug ID | 1205190 |
---|---|
Summary | windows:mingw:win{32|64}/mingw{32|64}-xapian- core - error: reference to 'byte' is ambiguous |
Classification | openSUSE |
Product | openSUSE.org |
Version | unspecified |
Hardware | Other |
OS | Other |
Status | NEW |
Severity | Normal |
Priority | P5 - None |
Component | 3rd party software |
Assignee | fstrba@suse.com |
Reporter | ralf.habacker@freenet.de |
QA Contact | screening-team-bugs@suse.de |
CC | fridrich.strba@bluewin.ch, hib@hiberis.nl, mkbosmans@gmail.com |
Found By | --- |
Blocker | --- |
The mentioned package fails to build with gcc12 as: [ 97s] backends/glass/glass_changes.cc: In static member function 'static void GlassChanges::check(const std::string&)': [ 97s] backends/glass/glass_changes.cc:248:66: error: expected '>' before 'byte' [ 97s] 248 | uint4 block_rev = unaligned_read4(reinterpret_cast<const byte*>(p)); [ 97s] | ^~~~ [ 97s] backends/glass/glass_changes.cc:248:66: error: expected '(' before 'byte' [ 97s] 248 | uint4 block_rev = unaligned_read4(reinterpret_cast<const byte*>(p)); [ 97s] | ^~~~ [ 97s] | ( [ 97s] backends/glass/glass_changes.cc:248:66: error: reference to 'byte' is ambiguous [ 97s] 248 | uint4 block_rev = unaligned_read4(reinterpret_cast<const byte*>(p)); [ 97s] | ^~~~ [ 97s] In file included from /usr/lib64/gcc/x86_64-w64-mingw32/12.2.0/include/c++/string:42, [ 97s] from backends/glass/glass_changes.h:26, [ 97s] from backends/glass/glass_changes.cc:24: [ 97s] /usr/lib64/gcc/x86_64-w64-mingw32/12.2.0/include/c++/bits/cpp_type_traits.h:406:30: note: candidates are: 'enum class std::byte' [ 97s] 406 | enum class byte : unsigned char; [ 97s] | ^~~~ [ 97s] In file included from backends/glass/glass_defs.h:24, [ 97s] from backends/glass/glass_changes.h:25: [ 97s] ./common/internaltypes.h:32:17: note: 'typedef uint8_t byte' [ 97s] 32 | typedef uint8_t byte; [ 97s] | ^~~~ [ 97s] backends/glass/glass_changes.cc:248:71: error: expected primary-expression before '>' token [ 97s] 248 | uint4 block_rev = unaligned_read4(reinterpret_cast<const byte*>(p)); One of the reason is the extensive usage of 'using namespace std', which maps 'enum class std::byte' into the global namespace, which then conflicts with /usr/i686-w64-mingw32/sys-root/mingw/include/rpcndr.h:397:170: error: reference to 'byte' is ambiguous [ 97s] ./common/internaltypes.h:32:17: note: 'typedef uint8_t byte' [ 97s] 32 | typedef uint8_t byte;