1*7a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 2*7a6aaf9bSLouis Dionne // 3*7a6aaf9bSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*7a6aaf9bSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*7a6aaf9bSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*7a6aaf9bSLouis Dionne // 7*7a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 8*7a6aaf9bSLouis Dionne 9*7a6aaf9bSLouis Dionne // <memory> 10*7a6aaf9bSLouis Dionne 11*7a6aaf9bSLouis Dionne // template <class X> class auto_ptr; 12*7a6aaf9bSLouis Dionne 13*7a6aaf9bSLouis Dionne // auto_ptr& operator=(auto_ptr& a) throw(); 14*7a6aaf9bSLouis Dionne 15*7a6aaf9bSLouis Dionne #include <memory> 16*7a6aaf9bSLouis Dionne #include <cassert> 17*7a6aaf9bSLouis Dionne 18*7a6aaf9bSLouis Dionne #include "../A.h" 19*7a6aaf9bSLouis Dionne 20*7a6aaf9bSLouis Dionne void test()21*7a6aaf9bSLouis Dionnetest() 22*7a6aaf9bSLouis Dionne { 23*7a6aaf9bSLouis Dionne { 24*7a6aaf9bSLouis Dionne A* p1 = new A(1); 25*7a6aaf9bSLouis Dionne const std::auto_ptr<A> ap1(p1); 26*7a6aaf9bSLouis Dionne A* p2 = new A(2); 27*7a6aaf9bSLouis Dionne std::auto_ptr<A> ap2(p2); 28*7a6aaf9bSLouis Dionne assert(A::count == 2); 29*7a6aaf9bSLouis Dionne assert(ap1.get() == p1); 30*7a6aaf9bSLouis Dionne assert(ap2.get() == p2); 31*7a6aaf9bSLouis Dionne std::auto_ptr<A>& apr = ap2 = ap1; 32*7a6aaf9bSLouis Dionne assert(&apr == &ap2); 33*7a6aaf9bSLouis Dionne assert(A::count == 1); 34*7a6aaf9bSLouis Dionne assert(ap1.get() == 0); 35*7a6aaf9bSLouis Dionne assert(ap2.get() == p1); 36*7a6aaf9bSLouis Dionne } 37*7a6aaf9bSLouis Dionne assert(A::count == 0); 38*7a6aaf9bSLouis Dionne } 39*7a6aaf9bSLouis Dionne main(int,char **)40*7a6aaf9bSLouis Dionneint main(int, char**) 41*7a6aaf9bSLouis Dionne { 42*7a6aaf9bSLouis Dionne test(); 43*7a6aaf9bSLouis Dionne 44*7a6aaf9bSLouis Dionne return 0; 45*7a6aaf9bSLouis Dionne } 46