//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <memory>
// allocator:
// pointer allocate(size_type n, allocator<void>::const_pointer hint=0);
#include<memory>#include<new>#include<cstdlib>#include<cassert>intnew_called=0;void*operatornew(std::size_ts)throw(std::bad_alloc){++new_called;assert(s==3*sizeof(int));returnstd::malloc(s);}voidoperatordelete(void*p)throw(){--new_called;std::free(p);}intA_constructed=0;structA{intdata;A(){++A_constructed;}A(constA&){++A_constructed;}~A(){--A_constructed;}};intmain(){std::allocator<A>a;assert(new_called==0);assert(A_constructed==0);A*ap=a.allocate(3);assert(new_called==1);assert(A_constructed==0);a.deallocate(ap,3);assert(new_called==0);assert(A_constructed==0);A*ap2=a.allocate(3,(constvoid*)5);assert(new_called==1);assert(A_constructed==0);a.deallocate(ap2,3);assert(new_called==0);assert(A_constructed==0);}