--- /usr/include/boost/numeric/ublas/storage.hpp 2005-08-17 13:31:10.000000000 -0400 +++ /usr/include/boost/numeric/ublas/storage.hpp.orig 2005-08-17 07:16:57.000000000 -0400 @@ -60,20 +60,18 @@ alloc_ (a), size_ (0), data_ (0) { } explicit BOOST_UBLAS_INLINE - unbounded_array (size_type size, const ALLOC &a = ALLOC(), bool doinit = false): + unbounded_array (size_type size, const ALLOC &a = ALLOC()): alloc_(a), size_ (size) { if (size_) { data_ = alloc_.allocate (size_); - if (doinit) { - // ISSUE some compilers may zero POD here + // ISSUE some compilers may zero POD here #ifdef BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW - // array form fails on some compilers due to size cookie, is it standard conforming? - new (data_) value_type[size_]; + // array form fails on some compilers due to size cookie, is it standard conforming? + new (data_) value_type[size_]; #else - for (pointer d = data_; d != data_ + size_; ++d) + for (pointer d = data_; d != data_ + size_; ++d) new (d) value_type; #endif - } } } // No value initialised, but still be default constructed @@ -99,8 +97,11 @@ BOOST_UBLAS_INLINE ~unbounded_array () { if (size_) { - std::_Destroy (begin(), end(), alloc_); - alloc_.deallocate (data_, size_); + const iterator i_end = end(); + for (iterator i = begin (); i != i_end; ++i) { + iterator_destroy (i); + } + alloc_.deallocate (data_, size_); } } --- /usr/include/boost/numeric/ublas/vector.hpp 2005-08-17 13:35:07.000000000 -0400 +++ /usr/include/boost/numeric/ublas/vector.hpp.orig 2005-08-17 13:31:51.000000000 -0400 @@ -54,9 +54,9 @@ vector_container (), data_ () {} explicit BOOST_UBLAS_INLINE - vector (size_type size, bool doinit=false): + vector (size_type size): vector_container (), - data_ (size, std::allocator(), doinit) { + data_ (size) { } BOOST_UBLAS_INLINE vector (size_type size, const array_type &data):