/* Used in Boost.MultiIndex tests. * * Copyright 2003-2018 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) * * See http://www.boost.org/libs/multi_index for library home page. */ #ifndef BOOST_MULTI_INDEX_TEST_SMALL_ALLOCATOR_HPP #define BOOST_MULTI_INDEX_TEST_SMALL_ALLOCATOR_HPP #include /* keep it first to prevent nasty warns in MSVC */ template class small_allocator { public: typedef unsigned char size_type; typedef signed char difference_type; typedef T* pointer; typedef const T* const_pointer; typedef void* void_pointer; typedef const void* const_void_pointer; typedef T& reference; typedef const T& const_reference; typedef T value_type; templatestruct rebind{typedef small_allocator other;}; small_allocator(){} small_allocator(const small_allocator&){} templatesmall_allocator(const small_allocator&,int=0){} pointer allocate(size_type n) { return pointer((T*)(new char[n*sizeof(T)])); } void deallocate(pointer p,size_type) { delete[](char *)&*p; } size_type max_size()const{return (size_type)(-1);} friend bool operator==(const small_allocator&,const small_allocator&) { return true; } friend bool operator!=(const small_allocator&,const small_allocator&) { return false; } }; #endif