1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| template <class T>
std::uint32_t set(std::uint32_t &st, T en) {
return st |= en;
}
template <class T>
std::uint32_t clear(std::uint32_t &st, T en) {
return st &= (~en);
}
std::uint32_t clear(std::uint32_t &st) {
return st = 0u;
}
enum State {
State_A = 1u,
State_B = 2u,
State_C = 4u,
State_D = 8u
};
std::uint32_t st;
set(st, State_A); // st == State_A;
set(st, State_B); // st == State_A | State_B;
clear(st, State_B); // st == State_A;
clear(st); // st == 0; |
Partager