1// { dg-options "-std=gnu++0x" } 2 3// Copyright (C) 2007, 2009 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without Pred the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20#undef _GLIBCXX_CONCEPT_CHECKS 21 22#include <algorithm> 23#include <iterator> 24#include <testsuite_hooks.h> 25#include <testsuite_iterators.h> 26#include <testsuite_rvalref.h> 27 28using __gnu_test::test_container; 29using __gnu_test::input_iterator_wrapper; 30using __gnu_test::forward_iterator_wrapper; 31using __gnu_test::rvalstruct; 32using std::uninitialized_copy; 33 34typedef test_container<rvalstruct, input_iterator_wrapper> container_in; 35typedef test_container<rvalstruct, forward_iterator_wrapper> container_out; 36 37void test01() 38{ 39 bool test __attribute__((unused)) = true; 40 41 int inarray[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 42 const int size = sizeof(inarray) / sizeof(int); 43 44 rvalstruct in[size], out[size]; 45 std::copy(inarray, inarray + size, in); 46 47 container_in incon(in, in + size); 48 container_out outcon(out, out + size); 49 50 uninitialized_copy(std::move_iterator<input_iterator_wrapper<rvalstruct> >(incon.begin()), 51 std::move_iterator<input_iterator_wrapper<rvalstruct> >(incon.end()), 52 outcon.begin()); 53 VERIFY( std::equal(out, out + size, inarray) ); 54 for (int z = 0; z < size; ++z) 55 VERIFY( out[z].valid ); 56 for (int z = 0; z < size; ++z) 57 VERIFY( !in[z].valid ); 58} 59 60 61int main() 62{ 63 test01(); 64 return 0; 65} 66