Не нашел документации на тему «почему так делать нельзя»:
typedef enum
{
F1 = 1,
F2 = 2,
F3 = 4
} FT;
FT t;
t = F1 | F3;
if (t & (F2 | F3))
break;
Если действительно нельзя (хотя компилятор и cppcheck не ругаются), то как можно, чтобы в аргументах функции не висел int?