xref: /llvm-project/lldb/test/API/lang/cpp/constructors/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1 struct ClassWithImplicitCtor {
fooClassWithImplicitCtor2   int foo() { return 1; }
3 };
4 
5 struct ClassWithDefaultedCtor {
6   ClassWithDefaultedCtor() = default;
fooClassWithDefaultedCtor7   int foo() { return 2; }
8 };
9 
10 struct ClassWithOneCtor {
11   int value;
ClassWithOneCtorClassWithOneCtor12   ClassWithOneCtor(int i) { value = i; }
13 };
14 
15 struct ClassWithMultipleCtor {
16   int value;
ClassWithMultipleCtorClassWithMultipleCtor17   ClassWithMultipleCtor(int i) { value = i; }
ClassWithMultipleCtorClassWithMultipleCtor18   ClassWithMultipleCtor(int i, int v) { value = v + i; }
19 };
20 
21 struct ClassWithDeletedCtor {
22   int value;
ClassWithDeletedCtorClassWithDeletedCtor23   ClassWithDeletedCtor() { value = 6; }
24   ClassWithDeletedCtor(int i) = delete;
25 };
26 
27 struct ClassWithDeletedDefaultCtor {
28   int value;
29   ClassWithDeletedDefaultCtor() = delete;
ClassWithDeletedDefaultCtorClassWithDeletedDefaultCtor30   ClassWithDeletedDefaultCtor(int i) { value = i; }
31 };
32 
main()33 int main() {
34   ClassWithImplicitCtor C1;
35   C1.foo();
36   ClassWithDefaultedCtor C2;
37   C2.foo();
38   ClassWithOneCtor C3(22);
39   ClassWithMultipleCtor C4(23);
40   ClassWithMultipleCtor C5(24, 25);
41   ClassWithDeletedCtor C6;
42   ClassWithDeletedDefaultCtor C7(26);
43 
44   return 0; // break here
45 }
46