diff --git a/include/boost/multi_array.hpp b/include/boost/multi_array.hpp index 46979ac..5043ecc 100644 --- a/include/boost/multi_array.hpp +++ b/include/boost/multi_array.hpp @@ -33,7 +33,7 @@ #include "boost/multi_array/subarray.hpp" #include "boost/multi_array/multi_array_ref.hpp" #include "boost/multi_array/algorithm.hpp" -#include "boost/multi_array/allocators.hpp" +#include "boost/core/alloc_construct.hpp" #include "boost/core/empty_value.hpp" #include "boost/array.hpp" #include "boost/mpl/if.hpp" @@ -545,12 +545,12 @@ private: base_ = allocator().allocate(this->num_elements()); this->set_base_ptr(base_); allocated_elements_ = this->num_elements(); - detail::multi_array::construct(allocator(),base_,base_+allocated_elements_); + boost::alloc_construct_n(allocator(),base_,allocated_elements_); } void deallocate_space() { if(base_) { - detail::multi_array::destroy(allocator(),base_,base_+allocated_elements_); + boost::alloc_destroy_n(allocator(),base_,allocated_elements_); allocator().deallocate(base_,allocated_elements_); } } diff --git a/include/boost/multi_array/allocators.hpp b/include/boost/multi_array/allocators.hpp deleted file mode 100644 index 4691464..0000000 --- a/include/boost/multi_array/allocators.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018 Glen Joseph Fernandes -// (glenjofe@gmail.com) -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MULTI_ARRAY_ALLOCATORS_HPP -#define BOOST_MULTI_ARRAY_ALLOCATORS_HPP - -#include -#if !defined(BOOST_NO_CXX11_ALLOCATOR) -#include -#else -#include -#endif - -namespace boost { -namespace detail { -namespace multi_array { - -template -inline void destroy(A& allocator, T* ptr, T* end) -{ - for (; ptr != end; ++ptr) { -#if !defined(BOOST_NO_CXX11_ALLOCATOR) - std::allocator_traits::destroy(allocator,ptr); -#else - ptr->~T(); -#endif - } -} - -template -inline void construct(A& allocator, T* ptr) -{ -#if !defined(BOOST_NO_CXX11_ALLOCATOR) - std::allocator_traits::construct(allocator,ptr); -#else - ::new(static_cast(ptr)) T(); -#endif -} - -#if !defined(BOOST_NO_EXCEPTIONS) -template -inline void construct(A& allocator, T* ptr, T* end) -{ - T* start = ptr; - try { - for (; ptr != end; ++ptr) { - boost::detail::multi_array::construct(allocator,ptr); - } - } catch (...) { - boost::detail::multi_array::destroy(allocator,start,ptr); - throw; - } -} -#else -template -inline void construct(A& allocator, T* ptr, T* end) -{ - for (; ptr != end; ++ptr) { - boost::detail::multi_array::construct(allocator,ptr); - } -} -#endif - -} // multi_array -} // detail -} // boost - -#endif