Squashed 'boost/' changes from d9443bc48..c27aa31f0

c27aa31f0 Updated Boost to v1.70.0 including iterator range math numeric crc circular_buffer multi_index intrusive

git-subtree-dir: boost
git-subtree-split: c27aa31f06ebf1a91b3fa3ae9df9b5efdf14ec9f
This commit is contained in:
Bill Somerville
2019-07-02 23:38:24 +01:00
parent edd0930758
commit d361e123c6
6021 changed files with 118782 additions and 872011 deletions
+1 -1
View File
@@ -40,7 +40,7 @@
// See http://www.boost.org/libs/multi_array for documentation.
#include "boost/iterator.hpp"
#include <iterator>
namespace boost {
namespace detail {
+72
View File
@@ -0,0 +1,72 @@
// 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 <boost/config.hpp>
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
#include <memory>
#else
#include <new>
#endif
namespace boost {
namespace detail {
namespace multi_array {
template<class A, class T>
inline void destroy(A& allocator, T* ptr, T* end)
{
for (; ptr != end; ++ptr) {
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
std::allocator_traits<A>::destroy(allocator,ptr);
#else
ptr->~T();
#endif
}
}
template<class A, class T>
inline void construct(A& allocator, T* ptr)
{
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
std::allocator_traits<A>::construct(allocator,ptr);
#else
::new(static_cast<void*>(ptr)) T();
#endif
}
#if !defined(BOOST_NO_EXCEPTIONS)
template<class A, class T>
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<class A, class T>
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
+1
View File
@@ -463,6 +463,7 @@ protected:
index bound_adjustment = stride < 0 ? 1 : 0;
BOOST_ASSERT(((index_bases[n] - bound_adjustment) <= finish) &&
(finish <= (index_bases[n] + index(extents[n]) - bound_adjustment)));
ignore_unused_variable_warning(bound_adjustment);
#endif // BOOST_DISABLE_ASSERTS
-4
View File
@@ -39,8 +39,6 @@ namespace detail {
template <typename Array, typename IdxGen, typename Call_Type>
static void call(Array& a, const IdxGen& idgen, Call_Type c) {
typedef typename Array::index_range index_range;
typedef typename Array::index index;
idgen_helper<N-1>::call(a,idgen[c],c);
}
};
@@ -50,8 +48,6 @@ namespace detail {
template <typename Array, typename IdxGen, typename Call_Type>
static void call(Array& a, const IdxGen& idgen, Call_Type) {
typedef typename Array::index_range index_range;
typedef typename Array::index index;
a[ idgen ];
}
};
+6
View File
@@ -107,6 +107,12 @@ namespace multi_array {
index stride() const { return stride_; }
size_type size(index idx) const
{
return (start_ == from_start() || finish_ == to_end())
? idx : ((finish_ - start_) / stride_);
}
void set_index_range(index start, index finish, index stride=1)
{
start_ = start;
+1 -1
View File
@@ -60,7 +60,7 @@ class array_iterator
, private
value_accessor_generator<T,NumDims>::type
{
friend class iterator_core_access;
friend class ::boost::iterator_core_access;
typedef detail::multi_array::associated_types<T,NumDims> access_t;
typedef iterator_facade<