brintos

brintos / llvm-project-archived public Read only

0
0
Text · 954 B · 4e69b58 Raw
46 lines · cpp
1struct ClassWithImplicitCtor {2  int foo() { return 1; }3};4 5struct ClassWithDefaultedCtor {6  ClassWithDefaultedCtor() = default;7  int foo() { return 2; }8};9 10struct ClassWithOneCtor {11  int value;12  ClassWithOneCtor(int i) { value = i; }13};14 15struct ClassWithMultipleCtor {16  int value;17  ClassWithMultipleCtor(int i) { value = i; }18  ClassWithMultipleCtor(int i, int v) { value = v + i; }19};20 21struct ClassWithDeletedCtor {22  int value;23  ClassWithDeletedCtor() { value = 6; }24  ClassWithDeletedCtor(int i) = delete;25};26 27struct ClassWithDeletedDefaultCtor {28  int value;29  ClassWithDeletedDefaultCtor() = delete;30  ClassWithDeletedDefaultCtor(int i) { value = i; }31};32 33int 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 here45}46