diff options
Diffstat (limited to 'boost/container/detail/algorithms.hpp')
-rw-r--r-- | boost/container/detail/algorithms.hpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/boost/container/detail/algorithms.hpp b/boost/container/detail/algorithms.hpp index dc09575b24..af15f65737 100644 --- a/boost/container/detail/algorithms.hpp +++ b/boost/container/detail/algorithms.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,38 +13,40 @@ #ifndef BOOST_CONTAINER_DETAIL_ALGORITHMS_HPP #define BOOST_CONTAINER_DETAIL_ALGORITHMS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include <boost/container/detail/config_begin.hpp> #include <boost/container/detail/workaround.hpp> - -#include <boost/type_traits/has_trivial_copy.hpp> -#include <boost/type_traits/has_trivial_assign.hpp> -#include <boost/detail/no_exceptions_support.hpp> - -#include <boost/container/detail/type_traits.hpp> -#include <boost/container/detail/mpl.hpp> +#include <boost/container/allocator_traits.hpp> #include <boost/container/detail/iterators.hpp> - -#include <cstring> - namespace boost { namespace container { template<class A, class T, class InpIt> inline void construct_in_place(A &a, T* dest, InpIt source) { boost::container::allocator_traits<A>::construct(a, dest, *source); } -//#endif template<class A, class T, class U, class D> -inline void construct_in_place(A &a, T *dest, default_construct_iterator<U, D>) +inline void construct_in_place(A &a, T *dest, value_init_construct_iterator<U, D>) { boost::container::allocator_traits<A>::construct(a, dest); } +template <class T, class Difference> +class default_init_construct_iterator; + +template<class A, class T, class U, class D> +inline void construct_in_place(A &a, T *dest, default_init_construct_iterator<U, D>) +{ + boost::container::allocator_traits<A>::construct(a, dest, default_init); +} + +template <class T, class EmplaceFunctor, class Difference> +class emplace_iterator; + template<class A, class T, class U, class EF, class D> inline void construct_in_place(A &a, T *dest, emplace_iterator<U, EF, D> ei) { |