Well you have to decide what is important to you.
1. performance - using bitwise operators can save time in terms
copying the entire set. But separate boolean flags are quicker to
manipulate individually (which is how flags are normally done). But
this is probably not a core concern.
2. Ease of coding. This is a biggie and is really situation
dependent. Suppose you are decoding a network packet. There is a
32bit word that is a bunch of bit flags. Do you really want to sit
there are decode all 32 and then set individual boolean flags?
Especially if you only care about 1 or 2 of them, or maybe none of them
at all
?
3. Readability. I don't really see this as being too much of a
concern. if( value & BIT_MASK_1) is pretty readable. bitwise may
actually increase readability of things like copy
constructors/assignments
32 lines of copying for a normal boolean,
1 line for bitwise (assuming integer usage). You can very easily
mistype something in those 32 lines.
4 Memory usage / IO. This can add up. If you have a lot of
entities/devices each with their own boolean sets and you need to write
interval log files or even just keeping them in memory, it can add up
and may be of concern.