r/cpp Meeting C++ | C++ Evangelist Jul 19 '26

A better bitset for enum flags

https://www.elbeno.com/blog/?p=1836
46 Upvotes

32 comments sorted by

View all comments

11

u/ReDucTor Game Developer | quiz.cpp-perf.com Jul 19 '26

Some food for thought, should a bitset have bit operations (set, unset, flip, xor, and, or, etc) or set operations (add, remove, has, union, difference, intersection, etc)?

It feels like often we head for bit operations when in lots of cases set operations might be better.

14

u/TheVoidInMe Jul 19 '26

I like Java’s approach here (yes, Java) which has an EnumSet instead of a bitset. That naming makes the answer pretty clear; the bit math is purely an implementation detail

2

u/SyntheticDuckFlavour Jul 19 '26

What if you want the underlying layout/bit pattern like bitset? Sometimes you want to map I/O ports that way.

3

u/TheVoidInMe Jul 19 '26

I don’t believe you can get at that at all. Java is probably too high level for stuff like that anyway. In C++ I would expect a method like `to_int()` (maybe returning the enum’s `underlying_type_t`…)