//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <memory>
// shared_ptr
// template<class T, class A, class... Args>
// shared_ptr<T> allocate_shared(const A& a, Args&&... args);
#include<memory>#include<new>#include<cstdlib>#include<cassert>#include"../test_allocator.h"intnew_count=0;structA{staticintcount;A(inti,charc):int_(i),char_(c){++count;}A(constA&a):int_(a.int_),char_(a.char_){++count;}~A(){--count;}intget_int()const{returnint_;}charget_char()const{returnchar_;}private:intint_;charchar_;};intA::count=0;intmain(){{inti=67;charc='e';std::shared_ptr<A>p=std::allocate_shared<A>(test_allocator<A>(54),i,c);assert(test_allocator<A>::alloc_count==1);assert(A::count==1);assert(p->get_int()==67);assert(p->get_char()=='e');}assert(A::count==0);assert(test_allocator<A>::alloc_count==0);}