//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <memory>
// template <class ForwardIterator, class T>
// void
// uninitialized_fill(ForwardIterator first, ForwardIterator last,
// const T& x);
#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;try{std::uninitialized_fill(bp,bp+N,B());assert(false);}catch(...){for(inti=0;i<N;++i)assert(bp[i].data_==0);}B::count_=0;std::uninitialized_fill(bp,bp+2,B());for(inti=0;i<2;++i)assert(bp[i].data_==1);}