1*5a83710eSEric Fiselier //===----------------------------------------------------------------------===// 2*5a83710eSEric Fiselier // 3*5a83710eSEric Fiselier // The LLVM Compiler Infrastructure 4*5a83710eSEric Fiselier // 5*5a83710eSEric Fiselier // This file is dual licensed under the MIT and the University of Illinois Open 6*5a83710eSEric Fiselier // Source Licenses. See LICENSE.TXT for details. 7*5a83710eSEric Fiselier // 8*5a83710eSEric Fiselier //===----------------------------------------------------------------------===// 9*5a83710eSEric Fiselier 10*5a83710eSEric Fiselier // <algorithm> 11*5a83710eSEric Fiselier 12*5a83710eSEric Fiselier // template<ForwardIterator Iter, class T> 13*5a83710eSEric Fiselier // requires OutputIterator<Iter, Iter::reference> 14*5a83710eSEric Fiselier // && OutputIterator<Iter, const T&> 15*5a83710eSEric Fiselier // && HasEqualTo<Iter::value_type, T> 16*5a83710eSEric Fiselier // void 17*5a83710eSEric Fiselier // replace(Iter first, Iter last, const T& old_value, const T& new_value); 18*5a83710eSEric Fiselier 19*5a83710eSEric Fiselier #include <algorithm> 20*5a83710eSEric Fiselier #include <cassert> 21*5a83710eSEric Fiselier 22*5a83710eSEric Fiselier #include "test_iterators.h" 23*5a83710eSEric Fiselier 24*5a83710eSEric Fiselier template <class Iter> 25*5a83710eSEric Fiselier void 26*5a83710eSEric Fiselier test() 27*5a83710eSEric Fiselier { 28*5a83710eSEric Fiselier int ia[] = {0, 1, 2, 3, 4}; 29*5a83710eSEric Fiselier const unsigned sa = sizeof(ia)/sizeof(ia[0]); 30*5a83710eSEric Fiselier std::replace(Iter(ia), Iter(ia+sa), 2, 5); 31*5a83710eSEric Fiselier assert(ia[0] == 0); 32*5a83710eSEric Fiselier assert(ia[1] == 1); 33*5a83710eSEric Fiselier assert(ia[2] == 5); 34*5a83710eSEric Fiselier assert(ia[3] == 3); 35*5a83710eSEric Fiselier assert(ia[4] == 4); 36*5a83710eSEric Fiselier } 37*5a83710eSEric Fiselier 38*5a83710eSEric Fiselier int main() 39*5a83710eSEric Fiselier { 40*5a83710eSEric Fiselier test<forward_iterator<int*> >(); 41*5a83710eSEric Fiselier test<bidirectional_iterator<int*> >(); 42*5a83710eSEric Fiselier test<random_access_iterator<int*> >(); 43*5a83710eSEric Fiselier test<int*>(); 44*5a83710eSEric Fiselier } 45