1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef AB_H
10#define AB_H
11
12#include <cassert>
13
14class A
15{
16 int id_;
17public:
18 explicit A(int id) : id_(id) {++count;}
19 A(const A& a) : id_(a.id_) {++count;}
20 virtual ~A() {assert(id_ >= 0); id_ = -1; --count;}
21
22 A& operator=(const A& other) { id_ = other.id_; return *this; }
23
24 static int count;
25};
26
27int A::count = 0;
28
29class B
30 : public A
31{
32public:
33 explicit B(int id) : A(id) {++count;}
34 B(const B& a) : A(a) {++count;}
35 virtual ~B() {--count;}
36
37 static int count;
38};
39
40int B::count = 0;
41
42#endif // AB_H
43

source code of libcxx/test/std/depr/depr.auto.ptr/auto.ptr/AB.h