This works for me (in C++14 so that the binary literals are legal) :
Code:
#include <iostream>
#include <bitset>
using State = std::bitset<4>;
struct Person {
static const State isBad, isSad, isMad, isFat;
const char* name;
int age;
State state;
Person(const char* name, int age, State state)
: name(name), age(age), state(state) {}
void ShowState() {
if((state & isBad).any()) std::cout << "Bad\n";
if((state & isSad).any()) std::cout << "Sad\n";
if((state & isMad).any()) std::cout << "Mad\n";
if((state & isFat).any()) std::cout << "Fat\n";
}
};
const State Person::isBad{ 0b0001 },
Person::isSad{ 0b0010 },
Person::isMad{ 0b0100 },
Person::isFat{ 0b1000 };
int main() {
Person me("Joe", 25, State{ Person::isBad | Person::isMad });
me.ShowState();
}