Skip_over() algorithm I'm just curious if this is clear to the average person.

template&lt;typename IteratorType&gt;
inline IteratorType skip_over(
    IteratorType begin,
    IteratorType end,
    typename std::iterator_traits&lt;IteratorType&gt;::value_type skippedCharacter)
{
    typedef typename std::iterator_traits&lt;IteratorType&gt;::value_type value_type;
    return std::find_if(begin, end, 
            std::not1(
                 std::bind2nd(std::equal_to&lt;value_type&gt;(), skippedCharacter)
            )
        );
}
A few comments:


Algorithms typically use the names first and last for the iterators they take, not begin and end (in common usage, begin and end refer specifically to the iterators that delimit a range in a container).
The use of find_if seems a bit excessive:  yes, it is good to use the Standard Library algorithms, but if you are writing your own algorithm, you may as well just write a loop, especially if it makes the code much clearer.
With respect to template parameter naming, it is helpful if you say what category of iterator is required; this helps to document the algorithm.


Consider the following, alternative implementation:

template &lt;typename ForwardIterator, typename T&gt;
ForwardIterator skip_over(ForwardIterator first, ForwardIterator last, T const&amp; x)
{
    while (first != last &amp;&amp; *first == x)
        ++first;

    return first;
}