typedef parent_pointing_heap_node<typename base_type::internal_type> node_type;
-#ifdef BOOST_NO_CXX11_ALLOCATOR
- typedef typename allocator_argument::template rebind<node_type>::other allocator_type;
-#else
- typedef typename std::allocator_traits<allocator_argument>::template rebind_alloc<node_type> allocator_type;
-#endif
+ typedef typename boost::allocator_rebind<allocator_argument, node_type>::type allocator_type;
struct type:
base_type,
typedef typename base_maker::allocator_type allocator_type;
typedef typename base_maker::node_type node;
-#ifdef BOOST_NO_CXX11_ALLOCATOR
- typedef typename allocator_type::pointer node_pointer;
- typedef typename allocator_type::const_pointer const_node_pointer;
-#else
- typedef std::allocator_traits<allocator_type> allocator_traits;
- typedef typename allocator_traits::pointer node_pointer;
- typedef typename allocator_traits::const_pointer const_node_pointer;
-#endif
+ typedef typename boost::allocator_pointer<allocator_type>::type node_pointer;
+ typedef typename boost::allocator_const_pointer<allocator_type>::type const_node_pointer;
typedef detail::node_handle<node_pointer, super_t, reference> handle_type;
typedef typename implementation_defined::difference_type difference_type;
typedef typename implementation_defined::value_compare value_compare;
typedef typename implementation_defined::allocator_type allocator_type;
-#ifndef BOOST_NO_CXX11_ALLOCATOR
- typedef typename implementation_defined::allocator_traits allocator_traits;
-#endif
typedef typename implementation_defined::reference reference;
typedef typename implementation_defined::const_reference const_reference;
typedef typename implementation_defined::pointer pointer;
/// \copydoc boost::heap::priority_queue::max_size
size_type max_size(void) const
{
-#ifdef BOOST_NO_CXX11_ALLOCATOR
- return allocator_type::max_size();
-#else
const allocator_type& alloc = *this;
- return allocator_traits::max_size(alloc);
-#endif
+ return boost::allocator_max_size(alloc);
}
/// \copydoc boost::heap::priority_queue::clear
* */
handle_type push(value_type const & v)
{
-#ifdef BOOST_NO_CXX11_ALLOCATOR
- node_pointer n = allocator_type::allocate(1);
- new(n) node_type(super_t::make_node(v));
-#else
allocator_type& alloc = *this;
- node_pointer n = allocator_traits::allocate(alloc, 1);
- allocator_traits::construct(alloc, n, super_t::make_node(v));
-#endif
+ node_pointer n = alloc.allocate(1);
+ new(n) node_type(super_t::make_node(v));
insert_node(trees.begin(), n);
if (!top_element || super_t::operator()(top_element->value, n->value))
template <class... Args>
handle_type emplace(Args&&... args)
{
-#ifdef BOOST_NO_CXX11_ALLOCATOR
- node_pointer n = allocator_type::allocate(1);
- new(n) node_type(super_t::make_node(std::forward<Args>(args)...));
-#else
allocator_type& alloc = *this;
- node_pointer n = allocator_traits::allocate(alloc, 1);
- allocator_traits::construct(alloc, n, super_t::make_node(std::forward<Args>(args)...));
-#endif
+ node_pointer n = alloc.allocate(1);
+ new(n) node_type(super_t::make_node(std::forward<Args>(args)...));
insert_node(trees.begin(), n);
if (!top_element || super_t::operator()(top_element->value, n->value))
else
update_top_element();
-#ifdef BOOST_NO_CXX11_ALLOCATOR
element->~node_type();
- allocator_type::deallocate(element, 1);
-#else
allocator_type& alloc = *this;
- allocator_traits::destroy(alloc, element);
- allocator_traits::deallocate(alloc, element, 1);
-#endif
+ alloc.deallocate(element, 1);
sanity_check();
}