aboutsummaryrefslogtreecommitdiffstats
path: root/tests/rule-of-three/main.h
blob: c04e23dcae96219e98af91d4dab60a25b0ec3879 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <QtCore/QObject>



struct HasDtor // Warning
{
    ~HasDtor() { int a; }
};

struct HasDtorAndCopyCtor // Warning
{
    HasDtorAndCopyCtor(const HasDtorAndCopyCtor &) {}
    ~HasDtorAndCopyCtor() {}
};

struct HasDtorAndCopyCtorAndAssign // OK
{
    HasDtorAndCopyCtorAndAssign(const HasDtorAndCopyCtorAndAssign &) {}
    ~HasDtorAndCopyCtorAndAssign() {}
    HasDtorAndCopyCtorAndAssign& operator=(const HasDtorAndCopyCtorAndAssign &) { return *this; }
};

struct HasNothing // OK
{
};

struct HasCopyCtor // Warning
{
    HasCopyCtor() {}
    HasCopyCtor(const HasCopyCtor &) {}
};

struct HasDefaults // OK
{
    HasDefaults(const HasDefaults &) = default;
    ~HasDefaults() = default;
    HasDefaults& operator=(const HasDefaults &) = default;
};

struct HasOnlyDTOROnPurpose // OK
{
    ~HasOnlyDTOROnPurpose();
private:
    HasOnlyDTOROnPurpose(const HasOnlyDTOROnPurpose &) = delete;
    HasOnlyDTOROnPurpose& operator=(const HasOnlyDTOROnPurpose &) = delete;
};

struct HasOnlyDTOROnPurpose2;  // OK

struct HasOnlyDTOROnPurpose2  // OK
{
    ~HasOnlyDTOROnPurpose2();
private:
    Q_DISABLE_COPY(HasOnlyDTOROnPurpose2)
};

struct HasNothingButNested // OK
{
    HasNothingButNested() {}
    HasCopyCtor c;
};

struct Has3ButDtorDefault
{
    ~Has3ButDtorDefault() = default;
    Has3ButDtorDefault(const Has3ButDtorDefault &);
    Has3ButDtorDefault& operator=(const Has3ButDtorDefault &);
};

struct HasEmptyDtor
{
    ~HasEmptyDtor() {} // OK
};