namespace boost {
-#if !defined(BOOST_NO_CXX11_ALLOCATOR)
template<class A, class T>
inline void
alloc_destroy(A& a, T* p)
{
- std::allocator_traits<A>::destroy(a, p);
+ boost::allocator_destroy(a, p);
}
template<class A, class T>
alloc_destroy_n(A& a, T* p, std::size_t n)
{
while (n > 0) {
- std::allocator_traits<A>::destroy(a, p + --n);
+ boost::allocator_destroy(a, p + --n);
}
}
-#else
+
template<class A, class T>
inline void
-alloc_destroy(A&, T* p)
+alloc_destroy(noinit_adaptor<A>&, T* p)
{
p->~T();
}
template<class A, class T>
inline void
-alloc_destroy_n(A&, T* p, std::size_t n)
+alloc_destroy_n(noinit_adaptor<A>&, T* p, std::size_t n)
{
while (n > 0) {
p[--n].~T();
}
}
-#endif
namespace detail {
} /* detail */
-#if !defined(BOOST_NO_CXX11_ALLOCATOR)
template<class A, class T>
inline void
alloc_construct(A& a, T* p)
{
- std::allocator_traits<A>::construct(a, p);
+ boost::allocator_construct(a, p);
}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
inline void
alloc_construct(A& a, T* p, U&& u, V&&... v)
{
- std::allocator_traits<A>::construct(a, p, std::forward<U>(u),
+ boost::allocator_construct(a, p, std::forward<U>(u),
std::forward<V>(v)...);
}
#else
inline void
alloc_construct(A& a, T* p, U&& u)
{
- std::allocator_traits<A>::construct(a, p, std::forward<U>(u));
+ boost::allocator_construct(a, p, std::forward<U>(u));
}
#endif
#else
inline void
alloc_construct(A& a, T* p, const U& u)
{
- std::allocator_traits<A>::construct(a, p, u);
+ boost::allocator_construct(a, p, u);
}
template<class A, class T, class U>
inline void
alloc_construct(A& a, T* p, U& u)
{
- std::allocator_traits<A>::construct(a, p, u);
+ boost::allocator_construct(a, p, u);
}
#endif
{
detail::alloc_destroyer<A, T> hold(a, p);
for (std::size_t& i = hold.size(); i < n; ++i) {
- std::allocator_traits<A>::construct(a, p + i);
+ boost::allocator_construct(a, p + i);
}
hold.size() = 0;
}
{
detail::alloc_destroyer<A, T> hold(a, p);
for (std::size_t& i = hold.size(); i < n; ++i) {
- std::allocator_traits<A>::construct(a, p + i, l[i % m]);
+ boost::allocator_construct(a, p + i, l[i % m]);
}
hold.size() = 0;
}
{
detail::alloc_destroyer<A, T> hold(a, p);
for (std::size_t& i = hold.size(); i < n; void(++i), void(++b)) {
- std::allocator_traits<A>::construct(a, p + i, *b);
+ boost::allocator_construct(a, p + i, *b);
}
hold.size() = 0;
}
-#else
-template<class A, class T>
-inline void
-alloc_construct(A&, T* p)
-{
- ::new(static_cast<void*>(p)) T();
-}
template<class A, class T>
inline void
::new(static_cast<void*>(p)) T;
}
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
-template<class A, class T, class U, class... V>
-inline void
-alloc_construct(A&, T* p, U&& u, V&&... v)
-{
- ::new(static_cast<void*>(p)) T(std::forward<U>(u), std::forward<V>(v)...);
-}
-#else
-template<class A, class T, class U>
-inline void
-alloc_construct(A& a, T* p, U&& u)
-{
- ::new(static_cast<void*>(p)) T(std::forward<U>(u));
-}
-#endif
-#else
-template<class A, class T, class U>
-inline void
-alloc_construct(A&, T* p, const U& u)
-{
- ::new(static_cast<void*>(p)) T(u);
-}
-
-template<class A, class T, class U>
-inline void
-alloc_construct(A&, T* p, U& u)
-{
- ::new(static_cast<void*>(p)) T(u);
-}
-#endif
-
-template<class A, class T>
-inline void
-alloc_construct_n(A& a, T* p, std::size_t n)
-{
- detail::alloc_destroyer<A, T> hold(a, p);
- for (std::size_t& i = hold.size(); i < n; ++i) {
- ::new(static_cast<void*>(p + i)) T();
- }
- hold.size() = 0;
-}
-
template<class A, class T>
inline void
alloc_construct_n(noinit_adaptor<A>& a, T* p, std::size_t n)
hold.size() = 0;
}
-template<class A, class T>
-inline void
-alloc_construct_n(A& a, T* p, std::size_t n, const T* l, std::size_t m)
-{
- detail::alloc_destroyer<A, T> hold(a, p);
- for (std::size_t& i = hold.size(); i < n; ++i) {
- ::new(static_cast<void*>(p + i)) T(l[i % m]);
- }
- hold.size() = 0;
-}
-
-template<class A, class T, class I>
-inline void
-alloc_construct_n(A& a, T* p, std::size_t n, I b)
-{
- detail::alloc_destroyer<A, T> hold(a, p);
- for (std::size_t& i = hold.size(); i < n; void(++i), void(++b)) {
- ::new(static_cast<void*>(p + i)) T(*b);
- }
- hold.size() = 0;
-}
-#endif
-
} /* boost */
#endif