In constructor reverse_iterator<__normal_iterator > > ::reverse_iterator(const reverse_iterator<_Iter>&) no matching function for call to __normal_iterator > ::__normal_iterator(__normal_iterator >) candidates are ::__normal_iterator(const string* &) ::__normal_iterator() ::__normal_iterator(const __normal_iterator >&) -- triggered by: vector const & a; typedef vector::reverse_iterator riter; riter last = a.rbegin() + (a.size() - encloser_last_search);