$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r82681 - sandbox/varray/boost/container/detail
From: adam.wulkiewicz_at_[hidden]
Date: 2013-02-06 20:24:00
Author: awulkiew
Date: 2013-02-01 13:43:53 EST (Fri, 01 Feb 2013)
New Revision: 82681
URL: http://svn.boost.org/trac/boost/changeset/82681
Log:
varray elements with trivial ctor are now initialized.
Text files modified: 
   sandbox/varray/boost/container/detail/varray_util.hpp |    29 ++++++++---------------------           
   1 files changed, 8 insertions(+), 21 deletions(-)
Modified: sandbox/varray/boost/container/detail/varray_util.hpp
==============================================================================
--- sandbox/varray/boost/container/detail/varray_util.hpp	(original)
+++ sandbox/varray/boost/container/detail/varray_util.hpp	2013-02-01 13:43:53 EST (Fri, 01 Feb 2013)
@@ -464,9 +464,13 @@
 
 template <typename I>
 inline
-void uninitialized_fill_dispatch(I /*first*/, I /*last*/,
+void uninitialized_fill_dispatch(I first, I last,
                                  boost::true_type const& /*has_trivial_constructor*/)
-{}
+{
+    typedef typename boost::iterator_value<I>::type value_type;
+    for ( ; first != last ; ++first )
+        new (boost::addressof(*first)) value_type();
+}
 
 template <typename I>
 inline
@@ -501,27 +505,10 @@
 
 template <typename I>
 inline
-void construct_dispatch(I pos,
-                        ::boost::mpl::bool_<true> const& /*empty_constr*/)
-{}
-
-template <typename I>
-inline
-void construct_dispatch(I pos,
-                        ::boost::mpl::bool_<false> const& /*empty_constr*/)
-{
-    typedef typename ::boost::iterator_value<I>::type V;
-    new (static_cast<void*>(::boost::addressof(*pos))) V();                      // may throw
-}
-
-template <typename I>
-inline
 void construct(I pos)
 {
-    typedef typename ::boost::iterator_value<I>::type V;
-    typedef typename ::boost::has_trivial_constructor<V>::type empty_constr;
-
-    construct_dispatch(pos, empty_constr());                                    // may throw
+    typedef typename ::boost::iterator_value<I>::type value_type;
+    new (static_cast<void*>(::boost::addressof(*pos))) value_type();                      // may throw
 }
 
 // construct(I, V)