| Home | Libraries | People | FAQ | More

## 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;
      new_allocator & operator=(const new_allocator &) 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

4.     new_allocator & operator=(const new_allocator &) noexcept;

   Copy assignment operator from other `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

- Class new_allocator<void>