フラグとして使うならoperator|と&をオーバーロードするのが良いけど面倒だね

PNG_COLOR_MASK operator|(PNG_COLOR_MASK e1, PNG_COLOR_MASK e2)
{

 using u_t = typename std::underlying_type<PNG_COLOR_MASK>::type;

 return PNG_COLOR_MASK((u_t)e1 | (u_t)e2);

}