diff --git a/libcxx/test/std/containers/sequences/list/list.cons/dtor.pass.cpp b/libcxx/test/std/containers/sequences/list/list.cons/dtor.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/sequences/list/list.cons/dtor.pass.cpp @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// + +// ~list() + +// no emplace_back in C++03 +// UNSUPPORTED: c++03 + +#include +#include +#include + +#include "test_macros.h" + + +std::set destroyed; + +struct Foo { + explicit Foo(int i) : value(i) { } + ~Foo() { destroyed.insert(value); } + int value; +}; + +int main(int, char**) +{ + { + std::list list; + list.emplace_back(1); + list.emplace_back(2); + list.emplace_back(3); + assert(destroyed.empty()); + } + assert(destroyed.count(1) == 1); + assert(destroyed.count(2) == 1); + assert(destroyed.count(3) == 1); + + return 0; +}