在 enum class 中使用 bitmask 组合的方法

可以通过重载 | 运算符实现 bitmask 组合,例如:

1enum class SystemNamespaceType
2{
3    MOUNT   = CLONE_NEWNS,      // Mount Namespace
4    UTS     = CLONE_NEWUTS,     // UNIX Time-Sharing Namespace
5    IPC     = CLONE_NEWIPC,     // Inter-Process Communication Namespace
6    PID     = CLONE_NEWPID,     // Process ID Namespace
7    NET     = CLONE_NEWNET,     // Network Namespace
8    USER    = CLONE_NEWUSER,    // User Namespace
9    CGROUP  = CLONE_NEWCGROUP,  // CGroup Namespace
10};
11
12SystemNamespaceType operator | (SystemNamespaceType x, SystemNamespaceType y)
13{
14    return static_cast<SystemNamespaceType>(static_cast<int>(x) | static_cast<int>(y));
15}