lv_value.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75b892326406927b709cdaf6c384d4ababf456332Ben Murdoch// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// <iterator> 116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)// insert_iterator 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// requires CopyConstructible<Cont::value_type> 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// insert_iterator<Cont>& 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// operator=(const Cont::value_type& value); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <iterator> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class C> 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test(C c1, typename C::difference_type j, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typename C::value_type x1, typename C::value_type x2, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typename C::value_type x3, const C& c2) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::insert_iterator<C> q(c1, c1.begin() + j); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) q = x1; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) q = x2; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) q = x3; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(c1 == c2); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class C> 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)insert3at(C& c, typename C::iterator i, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typename C::value_type x1, typename C::value_type x2, 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) typename C::value_type x3) 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles){ 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) i = c.insert(i, x1); 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) i = c.insert(++i, x2); 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) c.insert(++i, x3); 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)int main() 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) typedef std::vector<int> C; 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) C c1; 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) for (int i = 0; i < 3; ++i) 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) c1.push_back(i); 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) C c2 = c1; 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) insert3at(c2, c2.begin(), 'a', 'b', 'c'); 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) test(c1, 0, 'a', 'b', 'c', c2); 55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) c2 = c1; 56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) insert3at(c2, c2.begin()+1, 'a', 'b', 'c'); 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) test(c1, 1, 'a', 'b', 'c', c2); 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) c2 = c1; 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) insert3at(c2, c2.begin()+2, 'a', 'b', 'c'); 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) test(c1, 2, 'a', 'b', 'c', c2); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) c2 = c1; 626d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) insert3at(c2, c2.begin()+3, 'a', 'b', 'c'); 636d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) test(c1, 3, 'a', 'b', 'c', c2); 646d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)