1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <algorithm> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12eb564e76cc3904d811c981a50ecce0659f444cc9Howard Hinnant// template<InputIterator InIter1, InputIterator InIter2, typename OutIter, 13eb564e76cc3904d811c981a50ecce0659f444cc9Howard Hinnant// Predicate<auto, InIter2::value_type, InIter1::value_type> Compare> 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// requires OutputIterator<OutIter, InIter1::reference> 15eb564e76cc3904d811c981a50ecce0659f444cc9Howard Hinnant// && OutputIterator<OutIter, InIter2::reference> 16eb564e76cc3904d811c981a50ecce0659f444cc9Howard Hinnant// && CopyConstructible<Compare> 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// OutIter 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// merge(InIter1 first1, InIter1 last1, 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// InIter2 first2, InIter2 last2, OutIter result, Compare comp); 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <algorithm> 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <functional> 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 2583e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "test_iterators.h" 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttemplate <class InIter1, class InIter2, class OutIter> 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttest() 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant unsigned N = 100000; 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ia = new int[N]; 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ib = new int[N]; 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ic = new int[2*N]; 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (unsigned i = 0; i < N; ++i) 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ia[i] = 2*i; 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (unsigned i = 0; i < N; ++i) 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ib[i] = 2*i+1; 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::reverse(ia, ia+N); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::reverse(ib, ib+N); 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant OutIter r = std::merge(InIter1(ia), InIter1(ia+N), 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant InIter2(ib), InIter2(ib+N), OutIter(ic), std::greater<int>()); 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(base(r) == ic+2*N); 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ic[0] == 2*N-1); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ic[2*N-1] == 0); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(std::is_sorted(ic, ic+2*N, std::greater<int>())); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ic; 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ib; 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ia; 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant unsigned N = 100; 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ia = new int[N]; 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ib = new int[N]; 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int* ic = new int[2*N]; 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant for (unsigned i = 0; i < 2*N; ++i) 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ic[i] = i; 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::random_shuffle(ic, ic+2*N); 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::copy(ic, ic+N, ia); 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::copy(ic+N, ic+2*N, ib); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::sort(ia, ia+N, std::greater<int>()); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::sort(ib, ib+N, std::greater<int>()); 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant OutIter r = std::merge(InIter1(ia), InIter1(ia+N), 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant InIter2(ib), InIter2(ib+N), OutIter(ic), std::greater<int>()); 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(base(r) == ic+2*N); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ic[0] == 2*N-1); 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ic[2*N-1] == 0); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(std::is_sorted(ic, ic+2*N, std::greater<int>())); 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ic; 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ib; 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant delete [] ia; 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, input_iterator<const int*>, output_iterator<int*> >(); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, input_iterator<const int*>, forward_iterator<int*> >(); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, input_iterator<const int*>, random_access_iterator<int*> >(); 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, input_iterator<const int*>, int*>(); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >(); 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >(); 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >(); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >(); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, forward_iterator<const int*>, int*>(); 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >(); 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >(); 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >(); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, bidirectional_iterator<const int*>, int*>(); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >(); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >(); 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >(); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >(); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, random_access_iterator<const int*>, int*>(); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, const int*, output_iterator<int*> >(); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, const int*, forward_iterator<int*> >(); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, const int*, bidirectional_iterator<int*> >(); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, const int*, random_access_iterator<int*> >(); 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<input_iterator<const int*>, const int*, int*>(); 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, input_iterator<const int*>, output_iterator<int*> >(); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, input_iterator<const int*>, forward_iterator<int*> >(); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, input_iterator<const int*>, random_access_iterator<int*> >(); 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, input_iterator<const int*>, int*>(); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >(); 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >(); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >(); 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >(); 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, forward_iterator<const int*>, int*>(); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >(); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >(); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >(); 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, bidirectional_iterator<const int*>, int*>(); 125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >(); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >(); 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >(); 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >(); 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, random_access_iterator<const int*>, int*>(); 131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, const int*, output_iterator<int*> >(); 133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, const int*, forward_iterator<int*> >(); 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, const int*, bidirectional_iterator<int*> >(); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, const int*, random_access_iterator<int*> >(); 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<forward_iterator<const int*>, const int*, int*>(); 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, input_iterator<const int*>, output_iterator<int*> >(); 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, input_iterator<const int*>, random_access_iterator<int*> >(); 142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, input_iterator<const int*>, int*>(); 143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >(); 145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >(); 146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >(); 147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >(); 148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, forward_iterator<const int*>, int*>(); 149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >(); 151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >(); 152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); 153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >(); 154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, bidirectional_iterator<const int*>, int*>(); 155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >(); 157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >(); 158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >(); 159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >(); 160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, random_access_iterator<const int*>, int*>(); 161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, const int*, output_iterator<int*> >(); 163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, const int*, forward_iterator<int*> >(); 164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, const int*, bidirectional_iterator<int*> >(); 165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, const int*, random_access_iterator<int*> >(); 166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<bidirectional_iterator<const int*>, const int*, int*>(); 167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, input_iterator<const int*>, output_iterator<int*> >(); 169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, input_iterator<const int*>, bidirectional_iterator<int*> >(); 171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, input_iterator<const int*>, random_access_iterator<int*> >(); 172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, input_iterator<const int*>, int*>(); 173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, forward_iterator<const int*>, output_iterator<int*> >(); 175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, forward_iterator<const int*>, forward_iterator<int*> >(); 176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, forward_iterator<const int*>, bidirectional_iterator<int*> >(); 177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, forward_iterator<const int*>, random_access_iterator<int*> >(); 178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, forward_iterator<const int*>, int*>(); 179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, output_iterator<int*> >(); 181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, forward_iterator<int*> >(); 182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); 183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, random_access_iterator<int*> >(); 184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, bidirectional_iterator<const int*>, int*>(); 185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, random_access_iterator<const int*>, output_iterator<int*> >(); 187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, random_access_iterator<const int*>, forward_iterator<int*> >(); 188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, random_access_iterator<const int*>, bidirectional_iterator<int*> >(); 189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, random_access_iterator<const int*>, random_access_iterator<int*> >(); 190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, random_access_iterator<const int*>, int*>(); 191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, const int*, output_iterator<int*> >(); 193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, const int*, forward_iterator<int*> >(); 194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, const int*, bidirectional_iterator<int*> >(); 195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, const int*, random_access_iterator<int*> >(); 196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<random_access_iterator<const int*>, const int*, int*>(); 197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, input_iterator<const int*>, output_iterator<int*> >(); 199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, input_iterator<const int*>, bidirectional_iterator<int*> >(); 200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, input_iterator<const int*>, bidirectional_iterator<int*> >(); 201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, input_iterator<const int*>, random_access_iterator<int*> >(); 202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, input_iterator<const int*>, int*>(); 203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, forward_iterator<const int*>, output_iterator<int*> >(); 205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, forward_iterator<const int*>, forward_iterator<int*> >(); 206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, forward_iterator<const int*>, bidirectional_iterator<int*> >(); 207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, forward_iterator<const int*>, random_access_iterator<int*> >(); 208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, forward_iterator<const int*>, int*>(); 209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, bidirectional_iterator<const int*>, output_iterator<int*> >(); 211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, bidirectional_iterator<const int*>, forward_iterator<int*> >(); 212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); 213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, bidirectional_iterator<const int*>, random_access_iterator<int*> >(); 214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, bidirectional_iterator<const int*>, int*>(); 215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, random_access_iterator<const int*>, output_iterator<int*> >(); 217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, random_access_iterator<const int*>, forward_iterator<int*> >(); 218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, random_access_iterator<const int*>, bidirectional_iterator<int*> >(); 219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, random_access_iterator<const int*>, random_access_iterator<int*> >(); 220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, random_access_iterator<const int*>, int*>(); 221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, const int*, output_iterator<int*> >(); 223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, const int*, forward_iterator<int*> >(); 224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, const int*, bidirectional_iterator<int*> >(); 225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, const int*, random_access_iterator<int*> >(); 226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test<const int*, const int*, int*>(); 227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 228