AZStd uses simple and fast allocator model, it does not follow the CStd. It is not templated on any type, thus is doesn't care about construction or destruction. We do require name support, in most cases should be just a pointer to a literal.
This is the specification for an AZSTD allocator:
class allocator
{
public:
typedef <impl defined> pointer;
typedef <impl defined> size_type;
typedef <impl defined> difference_type;
allocator(const char* name = "AZSTD Allocator");
allocator(const allocator& rhs);
allocator(const allocator& rhs, const char* name);
allocator& operator=(const allocator& rhs;
pointer allocate(size_type byteSize, size_type alignment);
void deallocate(pointer ptr, size_type byteSize, size_type alignment);
size_type resize(pointer ptr, size_type newSize);
const char* get_name() const;
void set_name(const char* name);
size_type max_size() const;
<optional> size_type get_allocated_size() const;
};
bool operator==(const allocator& a, const allocator& b);
bool operator!=(const allocator& a, const allocator& b);