No, C++ does not come with a way to do range checking, you could however implement your own number class which overloads the assignment and arithmetic operators:
#include <cassert>
template<int lower, int upper>
class RangedNumber{
public:
RangedNumber(int value):value(value){
test();
}
RangedNumber(const RangedNumber& r):value(r.value){}
RangedNumber& operator+=(int i){
value += i;
test();
return *this;
}
RangedNumber operator+(int i) const{
RangedNumber r(*this);
return r += i;
}
RangedNumber& operator-=(int i){
value -= i;
test();
return *this;
}
RangedNumber operator-(int i) const{
RangedNumber r(*this);
return r -= i;
}
int get() const {
return value;
}
private:
int value;
void test(){
if(value < lower || value >= upper)
throw std::out_of_range;
}
};