diff options
Diffstat (limited to 'boost/container/detail/copy_move_algo.hpp')
-rw-r--r-- | boost/container/detail/copy_move_algo.hpp | 172 |
1 files changed, 82 insertions, 90 deletions
diff --git a/boost/container/detail/copy_move_algo.hpp b/boost/container/detail/copy_move_algo.hpp index 5293260091..cc87e4abc0 100644 --- a/boost/container/detail/copy_move_algo.hpp +++ b/boost/container/detail/copy_move_algo.hpp @@ -38,7 +38,7 @@ namespace boost { namespace container { -namespace container_detail { +namespace dtl { template<class I> struct are_elements_contiguous @@ -65,17 +65,15 @@ struct are_elements_contiguous< ::boost::move_iterator<It> > : are_elements_contiguous<It> {}; +} //namespace dtl { + ///////////////////////// // predeclarations ///////////////////////// -template<class Pointer> -class vector_iterator; - -template<class Pointer> -class vector_const_iterator; +template <class Pointer, bool IsConst> +class vec_iterator; -} //namespace container_detail { } //namespace container { namespace interprocess { @@ -87,20 +85,14 @@ class offset_ptr; namespace container { -namespace container_detail { +namespace dtl { ///////////////////////// //vector_[const_]iterator ///////////////////////// -template<class Pointer> -struct are_elements_contiguous<boost::container::container_detail::vector_iterator<Pointer> > -{ - static const bool value = true; -}; - -template<class Pointer> -struct are_elements_contiguous<boost::container::container_detail::vector_const_iterator<Pointer> > +template <class Pointer, bool IsConst> +struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst> > { static const bool value = true; }; @@ -130,7 +122,7 @@ template <typename I, typename O> struct is_memtransfer_copy_assignable : boost::move_detail::and_ < are_contiguous_and_same<I, O> - , container_detail::is_trivially_copy_assignable< typename ::boost::container::iterator_traits<I>::value_type > + , dtl::is_trivially_copy_assignable< typename ::boost::container::iterator_traits<I>::value_type > > {}; @@ -138,28 +130,28 @@ template <typename I, typename O> struct is_memtransfer_copy_constructible : boost::move_detail::and_ < are_contiguous_and_same<I, O> - , container_detail::is_trivially_copy_constructible< typename ::boost::container::iterator_traits<I>::value_type > + , dtl::is_trivially_copy_constructible< typename ::boost::container::iterator_traits<I>::value_type > > {}; template <typename I, typename O, typename R> struct enable_if_memtransfer_copy_constructible - : enable_if<container_detail::is_memtransfer_copy_constructible<I, O>, R> + : enable_if<dtl::is_memtransfer_copy_constructible<I, O>, R> {}; template <typename I, typename O, typename R> struct disable_if_memtransfer_copy_constructible - : disable_if<container_detail::is_memtransfer_copy_constructible<I, O>, R> + : disable_if<dtl::is_memtransfer_copy_constructible<I, O>, R> {}; template <typename I, typename O, typename R> struct enable_if_memtransfer_copy_assignable - : enable_if<container_detail::is_memtransfer_copy_assignable<I, O>, R> + : enable_if<dtl::is_memtransfer_copy_assignable<I, O>, R> {}; template <typename I, typename O, typename R> struct disable_if_memtransfer_copy_assignable - : disable_if<container_detail::is_memtransfer_copy_assignable<I, O>, R> + : disable_if<dtl::is_memtransfer_copy_assignable<I, O>, R> {}; template @@ -224,44 +216,44 @@ struct is_memzero_initializable { typedef typename ::boost::container::iterator_traits<O>::value_type value_type; static const bool value = are_elements_contiguous<O>::value && - ( container_detail::is_integral<value_type>::value || container_detail::is_enum<value_type>::value + ( dtl::is_integral<value_type>::value || dtl::is_enum<value_type>::value #if defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL) - || container_detail::is_pointer<value_type>::value + || dtl::is_pointer<value_type>::value #endif #if defined(BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_ZERO) - || container_detail::is_floating_point<value_type>::value + || dtl::is_floating_point<value_type>::value #endif #if defined(BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_ZERO) && defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL) - || container_detail::is_pod<value_type>::value + || dtl::is_pod<value_type>::value #endif ); }; template <typename O, typename R> struct enable_if_memzero_initializable - : enable_if_c<container_detail::is_memzero_initializable<O>::value, R> + : enable_if_c<dtl::is_memzero_initializable<O>::value, R> {}; template <typename O, typename R> struct disable_if_memzero_initializable - : enable_if_c<!container_detail::is_memzero_initializable<O>::value, R> + : enable_if_c<!dtl::is_memzero_initializable<O>::value, R> {}; template <typename I, typename R> struct enable_if_trivially_destructible - : enable_if_c < container_detail::is_trivially_destructible + : enable_if_c < dtl::is_trivially_destructible <typename boost::container::iterator_traits<I>::value_type>::value , R> {}; template <typename I, typename R> struct disable_if_trivially_destructible - : enable_if_c <!container_detail::is_trivially_destructible + : enable_if_c <!dtl::is_trivially_destructible <typename boost::container::iterator_traits<I>::value_type>::value , R> {}; -} //namespace container_detail { +} //namespace dtl { ////////////////////////////////////////////////////////////////////////////// // @@ -281,7 +273,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc(Allocator &a, I f, I l, F r) { F back = r; @@ -305,9 +297,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc(Allocator &, I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove(f, l, r); } +{ return dtl::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -326,7 +318,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc_n(Allocator &a, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { F back = r; @@ -350,9 +342,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_move_alloc_n(Allocator &, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n(f, n, r); } +{ return dtl::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -371,7 +363,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_move_alloc_n_source(Allocator &a, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { F back = r; @@ -395,9 +387,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_move_alloc_n_source(Allocator &, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source(f, n, r); } +{ return dtl::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -416,7 +408,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc(Allocator &a, I f, I l, F r) { F back = r; @@ -440,9 +432,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc(Allocator &, I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove(f, l, r); } +{ return dtl::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -461,7 +453,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc_n(Allocator &a, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { F back = r; @@ -485,9 +477,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, F>::type uninitialized_copy_alloc_n(Allocator &, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n(f, n, r); } +{ return dtl::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -506,7 +498,7 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_copy_alloc_n_source(Allocator &a, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { F back = r; @@ -530,9 +522,9 @@ template <typename Allocator, typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_constructible<I, F, I>::type uninitialized_copy_alloc_n_source(Allocator &, I f, typename boost::container::allocator_traits<Allocator>::size_type n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source(f, n, r); } +{ return dtl::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -550,7 +542,7 @@ inline typename container_detail::enable_if_memtransfer_copy_constructible<I, F, template <typename Allocator, typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memzero_initializable<F, F>::type +inline typename dtl::disable_if_memzero_initializable<F, F>::type uninitialized_value_init_alloc_n(Allocator &a, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { F back = r; @@ -573,7 +565,7 @@ inline typename container_detail::disable_if_memzero_initializable<F, F>::type template <typename Allocator, typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memzero_initializable<F, F>::type +inline typename dtl::enable_if_memzero_initializable<F, F>::type uninitialized_value_init_alloc_n(Allocator &, typename boost::container::allocator_traits<Allocator>::size_type n, F r) { typedef typename boost::container::iterator_traits<F>::value_type value_type; @@ -698,7 +690,7 @@ inline F uninitialized_fill_alloc_n(Allocator &a, const T &v, typename boost::co template <typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type copy(I f, I l, F r) { while (f != l) { @@ -711,9 +703,9 @@ inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F template <typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type copy(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove(f, l, r); } +{ return dtl::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -725,7 +717,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type copy_n(I f, U n, F r) { while (n--) { @@ -739,9 +731,9 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type copy_n(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n(f, n, r); } +{ return dtl::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -753,7 +745,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source(I f, U n, F r) { while (n--) { @@ -767,9 +759,9 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source(f, n, r); } +{ return dtl::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -781,7 +773,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source_dest(I f, U n, F &r) { while (n--) { @@ -795,9 +787,9 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type copy_n_source_dest(I f, U n, F &r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source_dest(f, n, r); } +{ return dtl::memmove_n_source_dest(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -808,7 +800,7 @@ inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, I> template <typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type move(I f, I l, F r) { while (f != l) { @@ -821,9 +813,9 @@ inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F template <typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type move(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove(f, l, r); } +{ return dtl::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -835,7 +827,7 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type move_n(I f, U n, F r) { while (n--) { @@ -849,9 +841,9 @@ template <typename I, // I models InputIterator typename U, // U models unsigned integral constant typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type move_n(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n(f, n, r); } +{ return dtl::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// @@ -863,7 +855,7 @@ inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F> template <typename I, // I models BidirectionalIterator typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, F>::type move_backward(I f, I l, F r) { while (f != l) { @@ -876,7 +868,7 @@ inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, F template <typename I, // I models InputIterator typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, F>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, F>::type move_backward(I f, I l, F r) BOOST_NOEXCEPT_OR_NOTHROW { typedef typename boost::container::iterator_traits<I>::value_type value_type; @@ -896,7 +888,7 @@ template <typename I // I models InputIterator ,typename U // U models unsigned integral constant ,typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source_dest(I f, U n, F &r) { while (n--) { @@ -910,9 +902,9 @@ template <typename I // I models InputIterator ,typename U // U models unsigned integral constant ,typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source_dest(I f, U n, F &r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source_dest(f, n, r); } +{ return dtl::memmove_n_source_dest(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -924,7 +916,7 @@ template <typename I // I models InputIterator ,typename U // U models unsigned integral constant ,typename F> // F models ForwardIterator -inline typename container_detail::disable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source(I f, U n, F r) { while (n--) { @@ -938,9 +930,9 @@ template <typename I // I models InputIterator ,typename U // U models unsigned integral constant ,typename F> // F models ForwardIterator -inline typename container_detail::enable_if_memtransfer_copy_assignable<I, F, I>::type +inline typename dtl::enable_if_memtransfer_copy_assignable<I, F, I>::type move_n_source(I f, U n, F r) BOOST_NOEXCEPT_OR_NOTHROW -{ return container_detail::memmove_n_source(f, n, r); } +{ return dtl::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -952,7 +944,7 @@ template <typename Allocator ,typename I // I models InputIterator ,typename U> // U models unsigned integral constant -inline typename container_detail::disable_if_trivially_destructible<I, void>::type +inline typename dtl::disable_if_trivially_destructible<I, void>::type destroy_alloc_n(Allocator &a, I f, U n) { while(n){ @@ -966,7 +958,7 @@ template <typename Allocator ,typename I // I models InputIterator ,typename U> // U models unsigned integral constant -inline typename container_detail::enable_if_trivially_destructible<I, void>::type +inline typename dtl::enable_if_trivially_destructible<I, void>::type destroy_alloc_n(Allocator &, I, U) {} @@ -982,7 +974,7 @@ template ,typename F // F models ForwardIterator ,typename G // G models ForwardIterator > -inline typename container_detail::disable_if_memtransfer_copy_assignable<F, G, void>::type +inline typename dtl::disable_if_memtransfer_copy_assignable<F, G, void>::type deep_swap_alloc_n( Allocator &a, F short_range_f, typename allocator_traits<Allocator>::size_type n_i , G large_range_f, typename allocator_traits<Allocator>::size_type n_j) { @@ -1002,21 +994,21 @@ template ,typename F // F models ForwardIterator ,typename G // G models ForwardIterator > -inline typename container_detail::enable_if_c - < container_detail::is_memtransfer_copy_assignable<F, G>::value && (MaxTmpBytes <= DeepSwapAllocNMaxStorage) && false +inline typename dtl::enable_if_c + < dtl::is_memtransfer_copy_assignable<F, G>::value && (MaxTmpBytes <= DeepSwapAllocNMaxStorage) && false , void>::type deep_swap_alloc_n( Allocator &a, F short_range_f, typename allocator_traits<Allocator>::size_type n_i , G large_range_f, typename allocator_traits<Allocator>::size_type n_j) { typedef typename allocator_traits<Allocator>::value_type value_type; - typedef typename container_detail::aligned_storage - <MaxTmpBytes, container_detail::alignment_of<value_type>::value>::type storage_type; + typedef typename dtl::aligned_storage + <MaxTmpBytes, dtl::alignment_of<value_type>::value>::type storage_type; storage_type storage; const std::size_t n_i_bytes = sizeof(value_type)*n_i; void *const large_ptr = static_cast<void*>(boost::movelib::iterator_to_raw_pointer(large_range_f)); void *const short_ptr = static_cast<void*>(boost::movelib::iterator_to_raw_pointer(short_range_f)); - void *const stora_ptr = static_cast<void*>(boost::movelib::iterator_to_raw_pointer(storage)); + void *const stora_ptr = static_cast<void*>(boost::movelib::iterator_to_raw_pointer(storage.data)); std::memcpy(stora_ptr, large_ptr, n_i_bytes); std::memcpy(large_ptr, short_ptr, n_i_bytes); std::memcpy(short_ptr, stora_ptr, n_i_bytes); @@ -1032,22 +1024,22 @@ template ,typename F // F models ForwardIterator ,typename G // G models ForwardIterator > -inline typename container_detail::enable_if_c - < container_detail::is_memtransfer_copy_assignable<F, G>::value && true//(MaxTmpBytes > DeepSwapAllocNMaxStorage) +inline typename dtl::enable_if_c + < dtl::is_memtransfer_copy_assignable<F, G>::value && true//(MaxTmpBytes > DeepSwapAllocNMaxStorage) , void>::type deep_swap_alloc_n( Allocator &a, F short_range_f, typename allocator_traits<Allocator>::size_type n_i , G large_range_f, typename allocator_traits<Allocator>::size_type n_j) { typedef typename allocator_traits<Allocator>::value_type value_type; - typedef typename container_detail::aligned_storage - <DeepSwapAllocNMaxStorage, container_detail::alignment_of<value_type>::value>::type storage_type; + typedef typename dtl::aligned_storage + <DeepSwapAllocNMaxStorage, dtl::alignment_of<value_type>::value>::type storage_type; storage_type storage; const std::size_t sizeof_storage = sizeof(storage); std::size_t n_i_bytes = sizeof(value_type)*n_i; char *large_ptr = static_cast<char*>(static_cast<void*>(boost::movelib::iterator_to_raw_pointer(large_range_f))); char *short_ptr = static_cast<char*>(static_cast<void*>(boost::movelib::iterator_to_raw_pointer(short_range_f))); - char *stora_ptr = static_cast<char*>(static_cast<void*>(&storage)); + char *stora_ptr = static_cast<char*>(static_cast<void*>(storage.data)); std::size_t szt_times = n_i_bytes/sizeof_storage; const std::size_t szt_rem = n_i_bytes%sizeof_storage; |