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 <class InputIterator, class Predicate> 13 // bool 14 // is_partitioned(InputIterator first, InputIterator last, Predicate pred); 15 16 #include <algorithm> 17 #include <cassert> 18 19 #include "test_iterators.h" 20 21 struct is_odd 22 { 23 bool operator()(const int& i) const {return i & 1;} 24 }; 25 26 int main() 27 { 28 { 29 const int ia[] = {1, 2, 3, 4, 5, 6}; 30 assert(!std::is_partitioned(input_iterator<const int*>(std::begin(ia)), 31 input_iterator<const int*>(std::end(ia)), 32 is_odd())); 33 } 34 { 35 const int ia[] = {1, 3, 5, 2, 4, 6}; 36 assert( std::is_partitioned(input_iterator<const int*>(std::begin(ia)), 37 input_iterator<const int*>(std::end(ia)), 38 is_odd())); 39 } 40 { 41 const int ia[] = {2, 4, 6, 1, 3, 5}; 42 assert(!std::is_partitioned(input_iterator<const int*>(std::begin(ia)), 43 input_iterator<const int*>(std::end(ia)), 44 is_odd())); 45 } 46 { 47 const int ia[] = {1, 3, 5, 2, 4, 6, 7}; 48 assert(!std::is_partitioned(input_iterator<const int*>(std::begin(ia)), 49 input_iterator<const int*>(std::end(ia)), 50 is_odd())); 51 } 52 { 53 const int ia[] = {1, 3, 5, 2, 4, 6, 7}; 54 assert( std::is_partitioned(input_iterator<const int*>(std::begin(ia)), 55 input_iterator<const int*>(std::begin(ia)), 56 is_odd())); 57 } 58 } 59