Паскаль имеет поддиапазоны.Ада немного расширила это, так что вы можете сделать что-то вроде поддиапазона, или вы можете создать совершенно новый тип с характеристиками существующего типа, но не совместим с ним (например, даже если он был в нужном диапазоне, вы бы нея не могу назначить Integer вашему новому типу на основе Integer).
C ++ не поддерживает идею напрямую, но достаточно гибок, чтобы вы могли реализовать ее, если хотите.Если вы решите поддерживать все составные операторы присваивания (+ =, - =, * = и т. Д.), То это может оказаться большой работой.
Другие языки, поддерживающие перегрузку операторов (например, ML и company), вероятно, может поддерживать его почти так же, как C ++.
Также обратите внимание, что в дизайне есть несколько нетривиальных решений.В частности, если тип используется таким образом, который может / действительно приводит к промежуточному результату, который выходит за пределы указанного диапазона, но дает конечный результат, который находится в пределах указанного диапазона, что вы хотите получить?В зависимости от вашей ситуации это может быть ошибкой или вполне допустимым, и вам придется решить, какой именно.