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