Assigning to enum variables

I have recently upgraded from Builder 6 to XE2, and have been stumped by the following:

[color=Purple] enum eNumber { one, two, three };
eNumber num = one;
num |= three; // E2277[/color]

E2277 says 'Lvalue required'. Well the enum variable num is a valid Lvalue. It is OK to assign to it with a simple assigment operator, e.g: num = 2;
But one cannot use the 'combined' operators like |= or &=.
I even ticked the project option C++ Compiler --> Integer-typed enums, so that it would be treated line an int, but still got the same error.
I don't know if XE2 is fully C11 conformant, but I can't see anything in C11 that forbids using this syntax.
Any ideas much appreciated.


  • Sorry this post appeared twice. I never got any feedback when I clicked the 'Post' button, so clicked it again. Webmaster - PLEASE NOTE!
    Also there was a typo in there:
    ...simple assigment operator, e.g: num = [b]2[/b];
    Of course I meant [color=Purple]num = [b]two[/b];[/color]
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


In this Discussion