//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // unique_ptr // test reset #include #include struct A { static int count; A() {++count;} A(const A&) {++count;} ~A() {--count;} }; int A::count = 0; int main() { { std::unique_ptr p(new A); assert(A::count == 1); A* i = p.get(); p.reset(); assert(A::count == 0); assert(p.get() == 0); } assert(A::count == 0); { std::unique_ptr p(new A); assert(A::count == 1); A* i = p.get(); p.reset(new A); assert(A::count == 1); } assert(A::count == 0); }