--- boost_1_54_0/boost/container/scoped_allocator.hpp 2013-05-18 23:06:19.000000000 +0200 +++ scoped_allocator.hpp 2013-08-30 11:47:08.897327501 +0200 @@ -1250,11 +1250,29 @@ //! the corresponding allocator in *this. scoped_allocator_adaptor select_on_container_copy_construction() const { - return scoped_allocator_adaptor - (internal_type_t() - ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) - ,inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) - ); + + #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + const bool has_zero_inner = sizeof...(InnerAllocs) == 0u; + #else + const bool has_zero_inner = + boost::container::container_detail::is_same + ::value; + #endif + + if (has_zero_inner) { + return scoped_allocator_adaptor + (internal_type_t() + ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) + ,this->inner_allocator() + ); + } else { + return scoped_allocator_adaptor + (internal_type_t() + ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) + ,this->inner_allocator() + //,inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) + ); + } } /// @cond base_type &base() { return *this; }