namespace std { template ForwIter uninitialized_fill_n (InputIter beg, InputIter end, ForwIter dest) { typedef typename iterator_traits::value_type VT; ForwIter save(dest); try { for (; beg!=end; ++beg,++dest) { new (static_cast(&*dest))VT(value); } return dest; } catch (...) { for (; save!=dest; ++save) { save->~VT(); } throw; } } }