История изменений
Исправление Deleted, (текущая версия) :
Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.
Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:
- Не давать юзеру умножать такие числа.
- Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
- Возвращать обычный unsigned int.
- ...
На самом деле конкретный выбранный вариант тут не важен. Важно то, что при наложении дополнительных ограничений у типа так или иначе меняется интерфейс.
Исправление Deleted, :
Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.
Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:
- Не давать юзеру умножать такие числа.
- Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
- Возвращать обычный unsigned int.
- ...
Исходная версия Deleted, :
Никакую новую алгебру для этого «подтипа» естественно не нужно переизобретать. Все функции доступны, никаких оберток с бойлерплейтом не нужно.
Вообще-то нужно. Если мы берём некий стандартный тип и добавляем на него ограничения, то старые операции над ним могут перестать иметь смысл. Например, если взять unsigned int и наложить на него ограничение «только простые числа», то непонятно что делать с операцией «умножение» для такого типа. Вариантов может быть несколько:
- Не давать юзеру умножать такие числа.
- Сделать функцию, которая всегда кидает исключение. Или сигнализирует ошибку другим способом.
- Возвращать обычный unsigned int.