1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <algorithm>
11
12// template<InputIterator Iter, Predicate<auto, Iter::value_type> Pred>
13//   requires CopyConstructible<Pred>
14//   Iter
15//   find_if_not(Iter first, Iter last, Pred pred);
16
17#include <algorithm>
18#include <functional>
19#include <cassert>
20
21#include "test_iterators.h"
22
23int main()
24{
25    int ia[] = {0, 1, 2, 3, 4, 5};
26    const unsigned s = sizeof(ia)/sizeof(ia[0]);
27    input_iterator<const int*> r = std::find_if_not(input_iterator<const int*>(ia),
28                                                    input_iterator<const int*>(ia+s),
29                                                    std::bind2nd(std::not_equal_to<int>(), 3));
30    assert(*r == 3);
31    r = std::find_if_not(input_iterator<const int*>(ia),
32                         input_iterator<const int*>(ia+s),
33                         std::bind2nd(std::not_equal_to<int>(), 10));
34    assert(r == input_iterator<const int*>(ia+s));
35}
36