codereview.stackexchange.com/questions/183246/...
ы плюсы / минусы использования битовых наборов над флагами перечислений?
namespace Flag {
enum State {
Read = 1 << 0,
Write = 1 << 1,
Binary = 1 << 2,
};
}
namespace Plain {
enum State {
Read,
Write,
Binary,
Count
};
}
int main()
{
{
unsigned int state = Flag::Read | Flag::Binary;
std::cout << state << std::endl;
state |= Flag::Write;
state &= ~(Flag::Read | Flag::Binary);
std::cout << state << std::endl;
} {
std::bitset<Plain::Count> state;
state.set(Plain::Read);
state.set(Plain::Binary);
std::cout << state.to_ulong() << std::endl;
state.flip();
std::cout << state.to_ulong() << std::endl;
}
return 0;
}
Как я могу видеть до сих пор, битовые наборы имеют более удобные функции set / clear / flip, но использование enum-flags является более широким подходом.
Каковы возможные недостатки наборов битов и что и когда я должен использовать в своем ежедневном коде?