65 #ifndef EXTENDEDENUM_H
66 #define EXTENDEDENUM_H
100 template <
typename BaseEnumT,
typename ExtensionEnumT, BaseEnumT defValue = BaseEnumT(0)>
105 inline ExtendedEnum()
111 inline ExtendedEnum(ExtendedEnum
const& e)
117 inline ExtendedEnum(ExtensionEnumT e)
118 : m_value(static_cast<int>(e))
123 inline ExtendedEnum(BaseEnumT e)
124 : m_value(static_cast<int>(e))
129 explicit inline ExtendedEnum(
int val)
135 inline operator ExtensionEnumT()
const
137 return static_cast<ExtensionEnumT
>(m_value);
141 inline operator BaseEnumT()
const
143 return static_cast<BaseEnumT
>(m_value);
147 inline ExtendedEnum& operator = (ExtendedEnum
const& e) =
default;
150 inline ExtendedEnum& operator = (ExtensionEnumT e)
152 m_value =
static_cast<int>(e);
157 inline ExtendedEnum& operator = (BaseEnumT e)
159 m_value =
static_cast<int>(e);
164 inline int value()
const