- void copy_n_and_update(Allocator &, Iterator, size_type) const
- { BOOST_ASSERT(false); }
+ void copy_n_and_update(Allocator &a, Iterator p, size_type n) const
+ {
+ if(!is_pod<value_type>::value){
+ for (; 0 < n; --n, ++p){
+ typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
+ value_type *vp = reinterpret_cast<value_type *>(v.data);
+ alloc_traits::construct(a, vp, default_init);
+ value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
+ *p = ::boost::move(*vp);
+ }
+ }
+ }