193a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//===----------------------------------------------------------------------===//
293a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//
393a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//                     The LLVM Compiler Infrastructure
493a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//
593a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein// This file is dual licensed under the MIT and the University of Illinois Open
693a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein// Source Licenses. See LICENSE.TXT for details.
793a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//
893a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//===----------------------------------------------------------------------===//
993a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein
1093a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein// <algorithm>
1193a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein
1293a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein// template<InputIterator Iter1, ForwardIterator Iter2>
1393a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//   requires HasEqualTo<Iter1::value_type, Iter2::value_type>
1493a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//   Iter1
1593a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein//   find_first_of(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2);
1693a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein
1793a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein#include <algorithm>
1893a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein#include <cassert>
1993a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein
2093a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein#include "test_iterators.h"
2193a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein
2293a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzsteinint main()
2393a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein{
2493a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    int ia[] = {0, 1, 2, 3, 0, 1, 2, 3};
2593a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    const unsigned sa = sizeof(ia)/sizeof(ia[0]);
2693a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    int ib[] = {1, 3, 5, 7};
2793a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    const unsigned sb = sizeof(ib)/sizeof(ib[0]);
2893a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    assert(std::find_first_of(input_iterator<const int*>(ia),
2993a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia + sa),
3093a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ib),
3193a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ib + sb)) ==
3293a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia+1));
3393a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    int ic[] = {7};
3493a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    assert(std::find_first_of(input_iterator<const int*>(ia),
3593a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia + sa),
3693a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic),
3793a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic + 1)) ==
3893a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia+sa));
3993a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    assert(std::find_first_of(input_iterator<const int*>(ia),
4093a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia + sa),
4193a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic),
4293a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic)) ==
4393a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia+sa));
4493a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein    assert(std::find_first_of(input_iterator<const int*>(ia),
4593a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia),
4693a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic),
4793a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              forward_iterator<const int*>(ic+1)) ==
4893a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein                              input_iterator<const int*>(ia));
4993a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein}
5093a35b93dc582e38ff8ee5979754a16b4bf4da0cSam Blitzstein