我正在EnumSet
为一个项目写一个类。如果可能的话,我想有一个EnumSet::AllOf()
方法,比如在 Java 中。解决此问题的明显方法是遍历 的每个成员std::underlying_type
并尝试将其强制转换为枚举类,然后从可能的第一个元素到最后一个元素。
您不知道枚举的最低或最高元素是什么,因此您必须搜索整个空间。
这甚至可能吗?如果是这样,怎么做?
编辑清晰:我正在寻找类似的东西
try {
std::dynamic_cast<std::underlying_type<E>::type>(e);
return true; // Cast succeeded, enum is valid
} catch (SOME_KIND_OF_EXCEPTION e) {
return false; // Cast failed, enum is invalid
}