I think the following "invalid conversion" error, which is believe is wrong.
When I remove the bitfield, the program compile fine. In any case, the error
message isn't really optimal. :)
(sid)4502:[EMAIL PROTECTED]: ~/src] cat test.cpp
class Ast
{
enum AstKind { };
const AstKind kind : 8;
void foo(AstKind k) { }
void bar(void) { foo(kind); }
};
[with gcc 4.2 20060508]
(sid)4503:[EMAIL PROTECTED]: ~/src] /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
test.cpp: In member function 'void Ast::bar()':
test.cpp:6: error: invalid conversion from 'unsigned char' to 'Ast::AstKind'
test.cpp:6: error: initializing argument 1 of 'void Ast::foo(Ast::AstKind)'
zsh: exit 1 /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
[with gcc 4.2 20060530]
(sid)4504:[EMAIL PROTECTED]: ~/src] /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
test.cpp: In member function 'void Ast::bar()':
test.cpp:6: error: invalid conversion from 'Ast::AstKind' to 'Ast::AstKind'
test.cpp:6: error: initializing argument 1 of 'void Ast::foo(Ast::AstKind)'
zsh: exit 1 /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
(sid)4505:[EMAIL PROTECTED]: ~/src]
--
Summary: conversion check confused by enum bitfields
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27979