Со следующими определениями C ++:
enum EnumA {
EA_Element = 1
};
enum EnumB {
EB_Element = 10
};
следующий код не компилируется, и это имеет смысл только:
EnumA variable;
variable = EB_Element; // won't compile
но следующий код компилируется:
EnumA variable = EA_Element;
if( variable == EB_Element ) { //will compile
}
хотя он не может ничего сделать смысл - сравниваются разные перечисления, и такой код, вероятно, ошибочен.
Почему эти, казалось бы, идентичные ситуации по-разному обрабатываются в C ++?