insert() for a set takes the parameters: (set::iterator, int) The iterator parameter is optional to enter, and so I assume it must have a default value in its implementation.
Now, aren't parameters with default value supposed to be at the end? shouldn't the insert function be called like: insert(int, set::iterator) or insert(int)?
Or does the implementation use function overloading? If so, why not just use default parameters for this?