Здравствуйте, rg45, Вы писали:
R>Ага, сначала были плохие плюсовики, теперь вот плохой C++. Так с этого нужно было начинать.
Вообще-то enum в С++ всегда был и остаётся каким-то недоразумением. Сначала значения почему-то были видны наружу enum и засоряли глобальное пространство. При этом размер занимаетмой переменной почему-то зависит от значений enum'а. Потом сделали enum class, но не подумали об частой операции, когда нужно сконвертировать значение enum'а в другой тип. Вместо того, чтобы придумать удобный синтаксис разрешили инициализацию значениями не входящими в перечисление:
#include <iostream>
#include <cstdlib>
#include <utility>
enum class EE: unsigned
{
asdf = 0, gkl = 1
};
int main() {
// your code goes here
EE x{9};
return 0;
}
Причем разрешили только для {}, а для
EE x(9); — нельзя, хотя по всей остальной логике должно быть ровно наоборот. И это при том, что таких простых операций, как, например, взять максимальное значение из перечисления не предусмотрено в языке.