У меня есть проблема, которая довольно часто встречается в коде, который я пишу в данный момент, когда я хочу получить целое число, которое может существовать только в определенном диапазоне, где диапазон [начало, конец). В основном я хочу иметь возможность сделать что-то вроде следующего:
cyclic_int ci(4, 8);
ci = 4;
assert(ci == 4);
ci += 3;
assert(ci == 7);
ci += 2;
assert(ci == 5);
assert(ci == 13);
И все это должно вернуть истину. По сути, класс автоматически применяет для меня модуль (%), а целое число действует как циклическое целое число в диапазоне, с которым я его инициализирую. Я мог бы реализовать этот класс сам и перегрузить все обычные операторы, чтобы он хорошо работал с обычными целыми числами, но он кажется полезным классом, который кто-то мог создать раньше.
Итак, мой вопрос в том, существует ли где-то такой общий класс, которым пользуются все, или я думаю сделать это неправильно, и есть ли более простой способ. (Моя цель - не думать постоянно о применении к нему оператора% или любой другой подобной функции) Спасибо.
Редактировать: Я решил написать свой собственный просто для удовольствия: http://github.com/robertmassaioli/wrapping_number