Function C++

#include 
#include 
#include 
#include 
using namespace std;
template 
vector find_all(InputIterator first, InputIterator last, Predicate pred)
{
  vector res;
  while (true) {
    first = find_if(first, last, pred);
    if (first == last) {
      break;
    }
    res.push_back(first);
    ++first;
  }
  return (res);
}
int main(int argc, char** argv){
  int arr[] = {3, 4, 5, 4, 5, 6, 5, 8};
  vector all = find_all(arr, arr + 8, bind2nd(equal_to(), 5)); 
  
  cout << "Found " << all.size() << " matching elements: ";
  
  for (vector::iterator it = all.begin(); it != all.end(); ++it) {
    cout << **it << " ";
  }
  return (0);
}