Здравствуйте, Аноним, Вы писали:
А>Могут ли быть проблемы в таком использовании переменной перечисления, учитывая что (flag_a | flag_b) не принадлежит перечислению)?
Проблема лишь в том, что flag_a|flag_b — это не SomeFlags, а просто int (или другой подходящий целый тип, в соответствии с правилами целочисленного продвижения).
Поэтому на f(flag_a|flag_b) компилятор будет ругаться.
А в остальном, проблем нет.
Да, кстати. Битовые флаги удобно не вручную высчитывать (сколько там будет 2^29?), а писать на сдвигах
enum SomeFlags {
flag_a = 1<<0,
flag_b = 1<<1,
.....
flag_n = 1<<n,
};