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 // explicit auto_ptr(X* p =0) 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 std::auto_ptr<A> ap = p; 287a6aaf9bSLouis Dionne assert(ap.get() == p); 297a6aaf9bSLouis Dionne assert(A::count == 1); 307a6aaf9bSLouis Dionne } 317a6aaf9bSLouis Dionne assert(A::count == 0); 327a6aaf9bSLouis Dionne { 337a6aaf9bSLouis Dionne std::auto_ptr<A> ap; 347a6aaf9bSLouis Dionne assert(ap.get() == 0); 357a6aaf9bSLouis Dionne } 367a6aaf9bSLouis Dionne } 377a6aaf9bSLouis Dionne main(int,char **)387a6aaf9bSLouis Dionneint main(int, char**) 397a6aaf9bSLouis Dionne { 407a6aaf9bSLouis Dionne test(); 417a6aaf9bSLouis Dionne 427a6aaf9bSLouis Dionne return 0; 437a6aaf9bSLouis Dionne } 44