I read the following in the "Make interfaces precisely and strongly typed" section of C++ Core Guidelines, I.4:
"For the case of a set of boolean values consider using a flags enum; a pattern that expresses a set of boolean values."
So it seems as if there is supposed to be a standard way to do this. For example, the idea of using scoped enums (in C++11 and up) sounds interesting. However, it doesn't seem like any implementation is really official, and every attempt gets some criticism. What is the standard here?