https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82307
Bug ID: 82307 Summary: unscoped enum-base incorrect cast Product: gcc Version: 6.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pro100fifa at ukr dot net Target Milestone: --- Created attachment 42228 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42228&action=edit The code have a bug Hello to GCC ( g++ ) developers! My English is bad, but i hope you will understand me. I found a bug ( if it is ) in g++ 6.4.0 version ( and earlier ). I will just provide a code which have the bug: /* Begin */ #include <iostream> enum : unsigned long long { VAL }; void foo( unsigned long long ) { std::cout << "unsigned long long" << std::endl; } void foo( int ) { std::cout << "int" << std::endl; } int main( void ) { foo( VAL ); } /* End */ I compiled this code in a Unix-like environment and command-line interface for Microsoft Windows -- Cygwin ( 64-bit ). I used following compiler options: -Wall -Wextra -std=c++17 <path_to_file.cpp> The following error messages were displayed: C:\Users\Maxim\Desktop\test.cpp: In function ‘int main()’: C:\Users\Maxim\Desktop\test.cpp:19:14: error: call of overloaded ‘foo(<anonymous enum>)’ is ambiguous foo( VAL ); ^ C:\Users\Maxim\Desktop\test.cpp:6:6: note: candidate: void foo(long long unsigned int) void foo( unsigned long long ) ^~~ C:\Users\Maxim\Desktop\test.cpp:11:6: note: candidate: void foo(int) void foo( int ) ^~~ ---- Thank you.