#include <iostream>
#include <bitset>
enum class Weekdays
{
kSunday = 0,
kMonday,
kTuesday,
kWednesday,
kThursday,
kFriday,
kSaturday,
COUNT
};
class Foo {
private:
std::bitset<(ulong)Weekdays::COUNT> weekdayFlags;
public:
void setDay(Weekdays day) { weekdayFlags.set((size_t)day); }
std::bitset<(ulong)Weekdays::COUNT>::reference operator[](Weekdays day) { return weekdayFlags[(size_t)day]; }
};
int main() {
Foo f;
f.setDay(Weekdays::kMonday);
f[Weekdays::kTuesday] = f[Weekdays::kMonday];
std::cout << std::boolalpha
<< "Monday: " << f[Weekdays::kMonday] << std::endl
<< "Tuesday: " << f[Weekdays::kTuesday] << std::endl
<< "Wednesday: " << f[Weekdays::kWednesday] << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0c2V0PgoKZW51bSBjbGFzcyBXZWVrZGF5cwp7CiAgICBrU3VuZGF5ID0gMCwKICAgIGtNb25kYXksCiAgICBrVHVlc2RheSwKICAgIGtXZWRuZXNkYXksCiAgICBrVGh1cnNkYXksCiAgICBrRnJpZGF5LAogICAga1NhdHVyZGF5LAogICAgQ09VTlQKfTsKCmNsYXNzIEZvbyB7Cglwcml2YXRlOgoJCXN0ZDo6Yml0c2V0PCh1bG9uZylXZWVrZGF5czo6Q09VTlQ+IHdlZWtkYXlGbGFnczsKCXB1YmxpYzoKCQl2b2lkIHNldERheShXZWVrZGF5cyBkYXkpIHsgd2Vla2RheUZsYWdzLnNldCgoc2l6ZV90KWRheSk7IH0KCQlzdGQ6OmJpdHNldDwodWxvbmcpV2Vla2RheXM6OkNPVU5UPjo6cmVmZXJlbmNlIG9wZXJhdG9yW10oV2Vla2RheXMgZGF5KSB7IHJldHVybiB3ZWVrZGF5RmxhZ3NbKHNpemVfdClkYXldOyB9Cn07CgppbnQgbWFpbigpIHsKCUZvbyBmOwoJCglmLnNldERheShXZWVrZGF5czo6a01vbmRheSk7CglmW1dlZWtkYXlzOjprVHVlc2RheV0gPSBmW1dlZWtkYXlzOjprTW9uZGF5XTsgCglzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGEgCgkJPDwgIk1vbmRheTogIiA8PCBmW1dlZWtkYXlzOjprTW9uZGF5XSA8PCBzdGQ6OmVuZGwKCQk8PCAiVHVlc2RheTogIiA8PCBmW1dlZWtkYXlzOjprVHVlc2RheV0gPDwgc3RkOjplbmRsCgkJPDwgIldlZG5lc2RheTogIiA8PCBmW1dlZWtkYXlzOjprV2VkbmVzZGF5XSA8PCBzdGQ6OmVuZGw7CgkJCglyZXR1cm4gMDsKfQ==