Похоже, что самый простой способ достичь желаемого - это поддиапазонный тип.Языки, которые поддерживают типы поддиапазонов, являются почти всеми языками в последовательности преемственности Algol68 (Algol68, Pascal, Modula-2, Oberon, Component Pascal) и их cousings и производные (Turbo Pascal, Borland Pascal, FreePascal, Delphi, Kylix, Object Pascal) а также ада.Я считаю, что вы можете реализовать поддиапазонные типы в C ++, используя некоторые тяжелые шаблоны-фу.Возможно, вы сможете реализовать их на языках с более выразительными системами типов, таких как Scala, Haskell, ML, Agda, Epigram, Guru.
Я понятия не имею, почему некоторые языки не поддерживают поддиапазонные типы.Они, очевидно, полезны, просты в использовании, просты для понимания, просты в реализации.
Другой возможностью может быть Fortress.В Fortress различные целочисленные типы фиксированной ширины фактически не встроены в язык, а определяются пользователем.Таким образом, нет причины, по которой вы не сможете создать свой собственный определенный пользователем целочисленный тип фиксированной ширины.