1 #include <QtCore/QObject>
2 
3 
4 
5 struct HasDtor // Warning
6 {
~HasDtorHasDtor7     ~HasDtor() { int a; }
8 };
9 
10 struct HasDtorAndCopyCtor // Warning
11 {
HasDtorAndCopyCtorHasDtorAndCopyCtor12     HasDtorAndCopyCtor(const HasDtorAndCopyCtor &) {}
~HasDtorAndCopyCtorHasDtorAndCopyCtor13     ~HasDtorAndCopyCtor() {}
14 };
15 
16 struct HasDtorAndCopyCtorAndAssign // OK
17 {
HasDtorAndCopyCtorAndAssignHasDtorAndCopyCtorAndAssign18     HasDtorAndCopyCtorAndAssign(const HasDtorAndCopyCtorAndAssign &) {}
~HasDtorAndCopyCtorAndAssignHasDtorAndCopyCtorAndAssign19     ~HasDtorAndCopyCtorAndAssign() {}
20     HasDtorAndCopyCtorAndAssign& operator=(const HasDtorAndCopyCtorAndAssign &) { return *this; }
21 };
22 
23 struct HasNothing // OK
24 {
25 };
26 
27 struct HasCopyCtor // Warning
28 {
HasCopyCtorHasCopyCtor29     HasCopyCtor() {}
HasCopyCtorHasCopyCtor30     HasCopyCtor(const HasCopyCtor &) {}
31 };
32 
33 struct HasDefaults // OK
34 {
35     HasDefaults(const HasDefaults &) = default;
36     ~HasDefaults() = default;
37     HasDefaults& operator=(const HasDefaults &) = default;
38 };
39 
40 struct HasOnlyDTOROnPurpose // OK
41 {
42     ~HasOnlyDTOROnPurpose();
43 private:
44     HasOnlyDTOROnPurpose(const HasOnlyDTOROnPurpose &) = delete;
45     HasOnlyDTOROnPurpose& operator=(const HasOnlyDTOROnPurpose &) = delete;
46 };
47 
48 struct HasOnlyDTOROnPurpose2;  // OK
49 
50 struct HasOnlyDTOROnPurpose2  // OK
51 {
52     ~HasOnlyDTOROnPurpose2();
53 private:
54     Q_DISABLE_COPY(HasOnlyDTOROnPurpose2)
55 };
56 
57 struct HasNothingButNested // OK
58 {
HasNothingButNestedHasNothingButNested59     HasNothingButNested() {}
60     HasCopyCtor c;
61 };
62 
63 struct Has3ButDtorDefault
64 {
65     ~Has3ButDtorDefault() = default;
66     Has3ButDtorDefault(const Has3ButDtorDefault &);
67     Has3ButDtorDefault& operator=(const Has3ButDtorDefault &);
68 };
69 
70 struct HasEmptyDtor
71 {
~HasEmptyDtorHasEmptyDtor72     ~HasEmptyDtor() {} // OK
73 };
74