厳密に型指定された列挙型の列挙子をフラグとして (組み合わせて) 使用できる小さなクラスを作成しました。基になる型の検出に type_traits を使用しているため、わずかに型安全であり、ほとんどがコンパイル時に処理されるはずです。とはいえ、本当にお得かどうかは疑問でした。
私は今のようなものを書くことができます
void Foo(Flags<Mode> Value);
プログラマーは、Mode の列挙子 (Mode::Read など) のみを使用でき、他の列挙型を Mode と組み合わせることができないことがわかります。よりも良い方法だと思いますか
void Foo(int Mode);
、人々がそれを評価できるかどうかはわかりませんか?