Я не большой поклонник битсетов. Это просто больше печатать на мой взгляд. И это не скрывает, что вы делаете в любом случае. Вы все еще должны & && | биты. Если вы не выбираете только 1 бит. Это может работать для небольших групп флагов. Не то чтобы нам нужно было скрывать то, что мы делаем. Но цель класса обычно состоит в том, чтобы облегчить его пользователям. Я не думаю, что этот класс выполняет это.
Скажем, у вас есть система флагов с .. 64 флагами. Если вы хотите проверить ... я не знаю .. 39 из них в одном операторе if, чтобы увидеть, все ли они включены ... использование битовых полей - огромная боль. Вы должны напечатать их все .. Конечно. Я предполагаю, что вы используете только функциональность битовых полей, а не методы смешивания и сопоставления. То же самое с битсетом. Если я не пропускаю что-то с классом ... что вполне возможно, так как я редко использую это ... Я не вижу способа, которым вы можете проверить все 39 флагов, если вы не наберете дырку или не прибегнете к "стандартным методам" (используя списки флагов enum или некоторое определенное значение для 39 битов с использованием оператора bitsets &&). Это может начать становиться грязным в зависимости от вашего подхода. И я знаю .. 64 флага звучит как много. И хорошо. Это .. в зависимости от того, что вы делаете. Говоря лично, большинство проектов, в которых я участвую, зависят от систем флагов. Так что на самом деле .. 64 не так уж неслыханно. Хотя 16 ~ 32 гораздо чаще встречается в моем опыте. На самом деле я помогаю в проекте, где одна система флагов имеет 640 бит. Это в основном система привилегий. Так что имеет смысл объединить их все вместе ... Однако ... по общему признанию ... Я хотел бы немного разбить это ... но ... да ... я помогаю ... не создаю.