LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Я не читал стандарт, но по опыту программирования на С не знаю чем отличается тип enum от типа который его предоставляет, int например, оба вмещают INT_MIN..INT_MAX, имеют тот же размер, принимают разные значения вне зависимости от определенных констант.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы. В Ada легко создать массив из boolean с индексом который равен enum, и он будет преобразован в битовую маску с проверкой значений на момент компиляции.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

А все это было уже очень давно в Ada, Pascal.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Я не читал стандарт, но по опыту программирования на С не знаю чем отличается тип enum от типа который его предоставляет, int например, оба вмещают INT_MIN..INT_MAX, имеют тот же размер, принимают разные значения вне зависимости от определенных констант.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы. В Ada легко создать массив из boolean с индексом который равен enum, и он будет преобразован в битовую маску с проверкой значений на момент компиляции.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Я не читал стандарт, но по опыту программирования на С не знаю чем отличается тип enum от типа который его предоставляет, int например, оба вмещают INT_MIN..INT_MAX, имеют тот же размер.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы. В Ada легко создать массив из boolean с индексом который равен enum, и он будет преобразован в битовую маску с проверкой значений на момент компиляции.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы. В Ada легко создать массив из boolean с индексом который равен enum, и он будет преобразован в битовую маску с проверкой значений на момент компиляции.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы. В Ada легко создать массив из boolean с индексом который равен enum, и он будет преобразован в битовую маску.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя их перебрать, преобразовать в строку, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать следующую константу после текущей, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исправление MOPKOBKA, :

Для этого придумали C++.

Там тоже enum это лишь набор констант, нельзя узнать не следующую, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.

Исходная версия MOPKOBKA, :

Там тоже enum это лишь набор констант, нельзя узнать не следующую, нельзя узнать количество констант enum, из за чего каждый выдумывает свою нотацию, например называют последнюю константу count, и потом думают что делать если так должна называться обычная константа.

Работы с множеством там нету кроме плохого класса std::set, и нельзя задать индексом enum, с массивом тоже самое, std::array даже не проверяет неправильные индексы.

Работы с диапазонами просто нету, как и в Rust, в Rust выдумывают новые типы на уровне компилятора, например NonZero, вместо возможности указать 1..INT_MAX.