I'm enabling code when BOOST_NO_CXX11_ALLOCATOR is not defined that uses std::allocator_traits<R> for construct, destroy as well as all members like pointer, const_pointer, size_type, difference_type, where what R is depends on whether BOOST_NO_CXX11_TEMPLATE_ALIASES is defined: if yes, then R is typename A::template rebind<Other>::other; if not, then R is typename std::allocator_traits<A>::template rebind_alloc<Other>. It's a not too ugly a workaround at the moment [commit 6d73b4aa54 at github.com/boostorg/smart_ptr] but VC11 seems to be the only thing requiring it. Searching through history I found that Daniel was also bitten by that implementation closer to the first release that supported VC11: https://groups.google.com/d/msg/boost-developers-archive/3uJDk-rRuJI/udDulU_yc8UJ I'm much in favor of having BOOST_NO_CXX11_ALLOCATOR no longer defined on VC11. Glen