blob: 2e9e7029c5e3625eca8c25ff4d0800df0bdbd165 [file] [log] [blame]
Marshall Clow354d39c2014-01-16 16:58:45 +00001//===----------------------------------------------------------------------===//
2//
Chandler Carruth57b08b02019-01-19 10:56:40 +00003// 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
Marshall Clow354d39c2014-01-16 16:58:45 +00006//
7//===----------------------------------------------------------------------===//
8
Howard Hinnant3e519522010-05-11 19:42:16 +00009#ifndef DEFAULTONLY_H
10#define DEFAULTONLY_H
11
12#include <cassert>
13
14class DefaultOnly
15{
16 int data_;
17
18 DefaultOnly(const DefaultOnly&);
19 DefaultOnly& operator=(const DefaultOnly&);
20public:
21 static int count;
22
23 DefaultOnly() : data_(-1) {++count;}
24 ~DefaultOnly() {data_ = 0; --count;}
25
26 friend bool operator==(const DefaultOnly& x, const DefaultOnly& y)
27 {return x.data_ == y.data_;}
28 friend bool operator< (const DefaultOnly& x, const DefaultOnly& y)
29 {return x.data_ < y.data_;}
30};
31
32int DefaultOnly::count = 0;
33
Howard Hinnant8f2f7e72010-08-22 00:15:28 +000034#endif // DEFAULTONLY_H