//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <memory>
// template <class InputIterator, class ForwardIterator>
// ForwardIterator
// uninitialized_copy(InputIterator first, InputIterator last,
// ForwardIterator result);
#include<memory>#include<cassert>structB{staticintcount_;intdata_;explicitB():data_(1){}B(constB&b){if(++count_==3)throw1;data_=b.data_;}~B(){data_=0;}};intB::count_=0;intmain(){constintN=5;charpool[sizeof(B)*N]={0};B*bp=(B*)pool;Bb[N];try{std::uninitialized_copy(b,b+N,bp);assert(false);}catch(...){for(inti=0;i<N;++i)assert(bp[i].data_==0);}B::count_=0;std::uninitialized_copy(b,b+2,bp);for(inti=0;i<2;++i)assert(bp[i].data_==1);}