//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <memory>
// template <class Alloc>
// struct allocator_traits
// {
// static void deallocate(allocator_type& a, pointer p, size_type n);
// ...
// };
#include<memory>#include<cassert>intcalled=0;template<classT>structA{typedefTvalue_type;voiddeallocate(value_type*p,std::size_tn){assert(p==(value_type*)0xDEADBEEF);assert(n==10);++called;}};intmain(){A<int>a;std::allocator_traits<A<int>>::deallocate(a,(int*)0xDEADBEEF,10);assert(called==1);}