c++operator-overloadingpostfix-operatorprefix-operator

How to differentiate (when overloading) between prefix and postfix forms of operator++? (C++)


Because I've overloaded the operator++ for an iterator class

template<typename T>
typename list<T>::iterator& list<T>::iterator::operator++()
{
    //stuff
}

But when I try to do

list<int>::iterator IT;
IT++;

I get a warning about there being no postifx ++, using prefix form. How can I specifically overload the prefix/postifx forms?


Solution

  • Write a version of the same operator overload, but give it a parameter of type int. You don't have to do anything with that parameter's value.

    If you're interested in some history of how this syntax was arrived out, there's a snippet of it here.