--- boost/circular_buffer/base.hpp.orig 2013-11-27 12:24:37.282256354 +0000 +++ boost/circular_buffer/base.hpp 2013-11-27 16:10:29.382673621 +0000 @@ -690,7 +690,7 @@ break; } if (is_uninitialized(dest)) { - ::new (dest) value_type(this_type::move_if_noexcept(*src)); + m_alloc.construct(dest, this_type::move_if_noexcept(*src)); ++constructed; } else { value_type tmp = this_type::move_if_noexcept(*src); @@ -1467,7 +1467,7 @@ increment(m_last); m_first = m_last; } else { - ::new (m_last) value_type(static_cast(item)); + m_alloc.construct(m_last, static_cast(item)); increment(m_last); ++m_size; } @@ -1484,7 +1484,7 @@ m_last = m_first; } else { decrement(m_first); - ::new (m_first) value_type(static_cast(item)); + m_alloc.construct(m_first, static_cast(item)); ++m_size; } } BOOST_CATCH(...) { @@ -2459,7 +2459,7 @@ */ void construct_or_replace(bool construct, pointer pos, param_value_type item) { if (construct) - ::new (pos) value_type(item); + m_alloc.construct(pos, item); else replace(pos, item); } @@ -2471,7 +2471,7 @@ */ void construct_or_replace(bool construct, pointer pos, rvalue_type item) { if (construct) - ::new (pos) value_type(boost::move(item)); + m_alloc.construct(pos, boost::move(item)); else replace(pos, boost::move(item)); } @@ -2611,7 +2611,7 @@ if (buffer_capacity == 0) return; while (first != last && !full()) { - ::new (m_last) value_type(*first++); + m_alloc.construct(m_last, *first++); increment(m_last); ++m_size; } @@ -2881,7 +2881,7 @@ pointer p = m_last; BOOST_TRY { for (; ii < construct; ++ii, increment(p)) - ::new (p) value_type(*wrapper()); + m_alloc.construct(p, *wrapper()); for (;ii < n; ++ii, increment(p)) replace(p, *wrapper()); } BOOST_CATCH(...) { @@ -2975,7 +2975,7 @@ for (;ii > construct; --ii, increment(p)) replace(p, *wrapper()); for (; ii > 0; --ii, increment(p)) - ::new (p) value_type(*wrapper()); + m_alloc.construct(p, *wrapper()); } BOOST_CATCH(...) { size_type constructed = ii < construct ? construct - ii : 0; m_last = add(m_last, constructed);