Да, но val1
и val2
сами по себе не могут быть целочисленного типа.
enum EnumType { et1_val1 = -1, et1_val2 = 1 };
enum EnumType2 { et2_val1 = 1, et2_val2 = -1 };
struct value_depends_on_conversion {
EnumType enum1_value;
EnumType2 enum2_value;
operator EnumType() const
{ return enum1_value; }
operator EnumType2() const
{ return enum2_value; }
} const val1 = { et1_val1, et2_val1 },
val2 = { et1_val2, et2_val2 };
C ++ 0x улучшит это, позволив пометить преобразования constexpr
, поэтомуглобальные объекты можно использовать так, как если бы они действительно имели тип enum.