Одна вещь, которую стоит иметь в виду, состоит в том, что ведущие подстановочные запросы прибывают в значительную премию производительности, по сравнению с другими подстановочными использованиями.
Why don't you use a class like following?
template<class Enum>
class ClassEnum
{
public:
explicit ClassEnum(Enum value) : value(value) {}
inline bool operator ==(ClassEnum rhs) { return value == rhs.value; }
inline bool operator !=(ClassEnum rhs) { return value != rhs.value; }
inline bool operator <=(ClassEnum rhs) { return value <= rhs.value; }
inline bool operator >=(ClassEnum rhs) { return value >= rhs.value; }
inline bool operator <(ClassEnum rhs) { return value < rhs.value; }
inline bool operator >(ClassEnum rhs) { return value > rhs.value; }
// Other operators...
private:
Enum value;
}
enum ColorTypeEnum { NO_COLOR, RED, BLUE, GREEN };
typedef ClassEnum<ColorTypeEnum> ColorType;
There is no implicit conversion to bool for ClassEnum
.