17a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 27a6aaf9bSLouis Dionne // 37a6aaf9bSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 47a6aaf9bSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 57a6aaf9bSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 67a6aaf9bSLouis Dionne // 77a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 87a6aaf9bSLouis Dionne 97a6aaf9bSLouis Dionne // <memory> 107a6aaf9bSLouis Dionne 117a6aaf9bSLouis Dionne // template <class X> class auto_ptr; 127a6aaf9bSLouis Dionne 137a6aaf9bSLouis Dionne // auto_ptr(auto_ptr& a) throw(); 147a6aaf9bSLouis Dionne 15*61f2b3edSLouis Dionne // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS 167a6aaf9bSLouis Dionne 177a6aaf9bSLouis Dionne #include <memory> 187a6aaf9bSLouis Dionne #include <cassert> 197a6aaf9bSLouis Dionne 207a6aaf9bSLouis Dionne #include "../A.h" 217a6aaf9bSLouis Dionne 227a6aaf9bSLouis Dionne void test()237a6aaf9bSLouis Dionnetest() 247a6aaf9bSLouis Dionne { 257a6aaf9bSLouis Dionne { 267a6aaf9bSLouis Dionne A* p = new A(1); 277a6aaf9bSLouis Dionne const std::auto_ptr<A> ap1(p); 287a6aaf9bSLouis Dionne std::auto_ptr<A> ap2(ap1); 297a6aaf9bSLouis Dionne assert(ap1.get() == 0); 307a6aaf9bSLouis Dionne assert(ap2.get() == p); 317a6aaf9bSLouis Dionne assert(A::count == 1); 327a6aaf9bSLouis Dionne } 337a6aaf9bSLouis Dionne assert(A::count == 0); 347a6aaf9bSLouis Dionne } 357a6aaf9bSLouis Dionne main(int,char **)367a6aaf9bSLouis Dionneint main(int, char**) 377a6aaf9bSLouis Dionne { 387a6aaf9bSLouis Dionne test(); 397a6aaf9bSLouis Dionne 407a6aaf9bSLouis Dionne return 0; 417a6aaf9bSLouis Dionne } 42