//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // unique_ptr // The deleter is not called if get() == 0 #include #include #include "test_macros.h" class Deleter { int state_; Deleter(Deleter&); Deleter& operator=(Deleter&); public: Deleter() : state_(0) {} int state() const { return state_; } void operator()(void*) { ++state_; } }; template void test_basic() { Deleter d; assert(d.state() == 0); { std::unique_ptr p(nullptr, d); assert(p.get() == nullptr); assert(&p.get_deleter() == &d); } assert(d.state() == 0); } int main(int, char**) { test_basic(); test_basic(); return 0; }