Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template new_allocator

boost::container::new_allocator — This class is a reduced STL-compatible allocator that allocates memory using operator new.

Synopsis

// In header: <boost/container/new_allocator.hpp>

template<typename T> 
class new_allocator {
public:
  // types
  typedef T                      value_type;                            
  typedef T *                    pointer;                               
  typedef const T *              const_pointer;                         
  typedef T &                    reference;                             
  typedef const T &              const_reference;                       
  typedef std::size_t            size_type;                             
  typedef std::ptrdiff_t         difference_type;                       
  typedef implementation_defined propagate_on_container_move_assignment;  // A integral constant of type bool with value true. 
  typedef implementation_defined is_always_equal;                         // A integral constant of type bool with value true. 

  // member classes/structs/unions
  template<typename T2> 
  struct rebind {
    // types
    typedef new_allocator< T2 > other;
  };

  // construct/copy/destruct
  new_allocator() noexcept;
  new_allocator(const new_allocator &) noexcept;
  template<typename T2> new_allocator(const new_allocator< T2 > &) noexcept;

  // public member functions
  pointer allocate(size_type);
  void deallocate(pointer, size_type) noexcept;
  size_type max_size() const noexcept;

  // friend functions
  friend void swap(new_allocator &, new_allocator &) noexcept;
  friend bool operator==(const new_allocator &, const new_allocator &) noexcept;
  friend bool operator!=(const new_allocator &, const new_allocator &) noexcept;
};

Description

new_allocator public construct/copy/destruct

  1. new_allocator() noexcept;

    Default constructor Never throws

  2. new_allocator(const new_allocator &) noexcept;

    Constructor from other new_allocator. Never throws

  3. template<typename T2> new_allocator(const new_allocator< T2 > &) noexcept;

    Constructor from related new_allocator. Never throws

new_allocator public member functions

  1. pointer allocate(size_type count);

    Allocates memory for an array of count elements. Throws std::bad_alloc if there is no enough memory

  2. void deallocate(pointer ptr, size_type) noexcept;

    Deallocates previously allocated memory. Never throws

  3. size_type max_size() const noexcept;

    Returns the maximum number of elements that could be allocated. Never throws

new_allocator friend functions

  1. friend void swap(new_allocator &, new_allocator &) noexcept;

    Swaps two allocators, does nothing because this new_allocator is stateless

  2. friend bool operator==(const new_allocator &, const new_allocator &) noexcept;

    An new_allocator always compares to true, as memory allocated with one instance can be deallocated by another instance

  3. friend bool operator!=(const new_allocator &, const new_allocator &) noexcept;

    An new_allocator always compares to false, as memory allocated with one instance can be deallocated by another instance

Specializations


PrevUpHomeNext