/*
 *  Equal and Mismatch
 *
 */

template<class In, class In2>
    bool equal(In first, In last, In2 first2);

template<class In, class In2, class BinPred>
    bool equal(In first, In last, In2 first2, BinPred p);


// returns with the first non-equal element
template<class In, class In2> 
    pair<In, In2> mismatch(In first, In last, In2 first2);

template<class In, class In2, class BinPred>
    pair<In, In2> mismatch(In first, In last, In2 first2, BinPred p);



/*
 *  Usage: need not be the same type
 *
 */

void f(list<int>& li, vector<double>& vd)
{
    bool b = equal(li.begin(),li.end(),vd.begin());
}