[Bug c++/82307] New: unscoped enum-base incorrect cast

pro100fifa at ukr dot net gcc-bugzilla@gcc.gnu.org
Sat Sep 23 12:17:00 GMT 2017


            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.

More information about the Gcc-bugs mailing list