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