LINUX.ORG.RU

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

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

Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.

Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:

  • Не давать юзеру умножать такие числа.
  • Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
  • Возвращать обычный unsigned int.
  • ...

На самом деле конкретный выбранный вариант тут не важен. Важно то, что при наложении дополнительных ограничений у типа так или иначе меняется интерфейс.

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

Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.

Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:

  • Не давать юзеру умножать такие числа.
  • Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
  • Возвращать обычный unsigned int.
  • ...

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

Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.

Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:

  • Не давать юзеру умножать такие числа.
  • Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
  • Возвращать обычный unsigned int.