#include <string>
#include <iostream>
#include <ostream>
#include <cstdlib>
enum Week { Monday=0, Tuesday=1, Wednesday=2, Friday=4 };
// Explicitly cast to int, to avoid infinite recursion.
inline Week operator|(Week a, Week b) {
return Week(int(a) | int(b));
}
inline Week& operator|=(Week& a, Week b) {
a = a | b;
return a;
}
inline Week operator&(Week a, Week b) {
return Week(int(a) & int(b));
}
inline Week& operator&=(Week& a, Week b) {
a = a & b;
return a;
}
inline Week operator^(Week a, Week b) {
return Week(int(a) ^ int(b));
}
inline Week& operator^=(Week& a, Week b) {
a = a ^ b;
return a;
}
inline Week operator~(Week a) {
return Week(~int(a));
}
bool error()
{
return std::rand() 2 != 0;
}
int main()
{
Week a = Monday;
std::cout << a << std::endl;
a |= Tuesday;
std::cout << a;
}
0
1
10.21.enum operator |
| 10.21.1. | Overloading operators for enumerations |