The struct Number has both pre-increment and post-increment operators overloaded:
template <typename N>
struct Number {
Number(N n):number_(n){}
Number& operator ++ () {
++number_;
return *this;
}
Number operator ++ (int) {
return number_++;
}
// conversion operator
operator N() { return number_; }
N number_;
};
The example code below creates an instance of Number<int>
and calls one of the above overloaded increment operators:
Number<int> n(10);
std::cout << ++n;
Select which one of the 2 increment-operator methods is called by std::cout << ++n
above.