//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // requires OutputIterator // && OutputIterator // && Predicate // && Predicate // OutIter // set_intersection(InIter1 first1, InIter1 last1, InIter2 first2, InIter2 last2, // OutIter result, Compare comp); #include #include #include #include "test_iterators.h" template void test() { int ia[] = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4}; const int sa = sizeof(ia)/sizeof(ia[0]); int ib[] = {2, 4, 4, 6}; const int sb = sizeof(ib)/sizeof(ib[0]); int ic[20]; int ir[] = {2, 4, 4}; const int sr = sizeof(ir)/sizeof(ir[0]); OutIter ce = std::set_intersection(Iter1(ia), Iter1(ia+sa), Iter2(ib), Iter2(ib+sb), OutIter(ic), std::less()); assert(base(ce) - ic == sr); assert(std::lexicographical_compare(ic, base(ce), ir, ir+sr) == 0); ce = std::set_intersection(Iter1(ib), Iter1(ib+sb), Iter2(ia), Iter2(ia+sa), OutIter(ic), std::less()); assert(base(ce) - ic == sr); assert(std::lexicographical_compare(ic, base(ce), ir, ir+sr) == 0); } int main() { test, input_iterator, output_iterator >(); test, input_iterator, forward_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, random_access_iterator >(); test, input_iterator, int*>(); test, forward_iterator, output_iterator >(); test, forward_iterator, forward_iterator >(); test, forward_iterator, bidirectional_iterator >(); test, forward_iterator, random_access_iterator >(); test, forward_iterator, int*>(); test, bidirectional_iterator, output_iterator >(); test, bidirectional_iterator, forward_iterator >(); test, bidirectional_iterator, bidirectional_iterator >(); test, bidirectional_iterator, random_access_iterator >(); test, bidirectional_iterator, int*>(); test, random_access_iterator, output_iterator >(); test, random_access_iterator, forward_iterator >(); test, random_access_iterator, bidirectional_iterator >(); test, random_access_iterator, random_access_iterator >(); test, random_access_iterator, int*>(); test, const int*, output_iterator >(); test, const int*, forward_iterator >(); test, const int*, bidirectional_iterator >(); test, const int*, random_access_iterator >(); test, const int*, int*>(); test, input_iterator, output_iterator >(); test, input_iterator, forward_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, random_access_iterator >(); test, input_iterator, int*>(); test, forward_iterator, output_iterator >(); test, forward_iterator, forward_iterator >(); test, forward_iterator, bidirectional_iterator >(); test, forward_iterator, random_access_iterator >(); test, forward_iterator, int*>(); test, bidirectional_iterator, output_iterator >(); test, bidirectional_iterator, forward_iterator >(); test, bidirectional_iterator, bidirectional_iterator >(); test, bidirectional_iterator, random_access_iterator >(); test, bidirectional_iterator, int*>(); test, random_access_iterator, output_iterator >(); test, random_access_iterator, forward_iterator >(); test, random_access_iterator, bidirectional_iterator >(); test, random_access_iterator, random_access_iterator >(); test, random_access_iterator, int*>(); test, const int*, output_iterator >(); test, const int*, forward_iterator >(); test, const int*, bidirectional_iterator >(); test, const int*, random_access_iterator >(); test, const int*, int*>(); test, input_iterator, output_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, random_access_iterator >(); test, input_iterator, int*>(); test, forward_iterator, output_iterator >(); test, forward_iterator, forward_iterator >(); test, forward_iterator, bidirectional_iterator >(); test, forward_iterator, random_access_iterator >(); test, forward_iterator, int*>(); test, bidirectional_iterator, output_iterator >(); test, bidirectional_iterator, forward_iterator >(); test, bidirectional_iterator, bidirectional_iterator >(); test, bidirectional_iterator, random_access_iterator >(); test, bidirectional_iterator, int*>(); test, random_access_iterator, output_iterator >(); test, random_access_iterator, forward_iterator >(); test, random_access_iterator, bidirectional_iterator >(); test, random_access_iterator, random_access_iterator >(); test, random_access_iterator, int*>(); test, const int*, output_iterator >(); test, const int*, forward_iterator >(); test, const int*, bidirectional_iterator >(); test, const int*, random_access_iterator >(); test, const int*, int*>(); test, input_iterator, output_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, bidirectional_iterator >(); test, input_iterator, random_access_iterator >(); test, input_iterator, int*>(); test, forward_iterator, output_iterator >(); test, forward_iterator, forward_iterator >(); test, forward_iterator, bidirectional_iterator >(); test, forward_iterator, random_access_iterator >(); test, forward_iterator, int*>(); test, bidirectional_iterator, output_iterator >(); test, bidirectional_iterator, forward_iterator >(); test, bidirectional_iterator, bidirectional_iterator >(); test, bidirectional_iterator, random_access_iterator >(); test, bidirectional_iterator, int*>(); test, random_access_iterator, output_iterator >(); test, random_access_iterator, forward_iterator >(); test, random_access_iterator, bidirectional_iterator >(); test, random_access_iterator, random_access_iterator >(); test, random_access_iterator, int*>(); test, const int*, output_iterator >(); test, const int*, forward_iterator >(); test, const int*, bidirectional_iterator >(); test, const int*, random_access_iterator >(); test, const int*, int*>(); test, output_iterator >(); test, bidirectional_iterator >(); test, bidirectional_iterator >(); test, random_access_iterator >(); test, int*>(); test, output_iterator >(); test, forward_iterator >(); test, bidirectional_iterator >(); test, random_access_iterator >(); test, int*>(); test, output_iterator >(); test, forward_iterator >(); test, bidirectional_iterator >(); test, random_access_iterator >(); test, int*>(); test, output_iterator >(); test, forward_iterator >(); test, bidirectional_iterator >(); test, random_access_iterator >(); test, int*>(); test >(); test >(); test >(); test >(); test(); }