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 является более широким подходом.

Каковы возможные недостатки наборов битов и что и когда я должен использовать в своем ежедневном коде?

Ответы на вопрос(0)

Ваш ответ на вопрос