namespace std { template void uninitialized_fill_n (ForwIter beg, Size num, const T& value) { typedef typename iterator_traits::value_type VT; ForwIter save(beg); try { for (; num--; ++beg) { new (static_cast(&*beg))VT(value); } } catch (...) { for (; save!=beg; ++save) { save->~VT(); } throw; } } }