C++ STL map and set containers' insert() function violating the rules for default parameters?
<p>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.</p>

<p>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)?</p>

<p>Or does the implementation use function overloading? If so, why not just use default parameters for this?</p>