#include <iostream>
using namespace std;
class A
{
public:
int x;
A(){}
};
class B
{
public:
int x;
B()=default;
};
int main()
{
int x = 5;
new(&x)A(); // Call for empty constructor, which does nothing
cout << x << endl;
x = 5;
new(&x)B; // Call for default constructor
cout << x << endl;
x = 5;
new(&x)B(); // Call for default constructor + Value initialization
cout << x << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgQSAKewpwdWJsaWM6CiAgICBpbnQgeDsKICAgIEEoKXt9Cn07CgpjbGFzcyBCIAp7CnB1YmxpYzoKICAgIGludCB4OwogICAgQigpPWRlZmF1bHQ7Cn07CgoKaW50IG1haW4oKSAKeyAKICAgIGludCB4ID0gNTsKICAgIG5ldygmeClBKCk7IC8vIENhbGwgZm9yIGVtcHR5IGNvbnN0cnVjdG9yLCB3aGljaCBkb2VzIG5vdGhpbmcKICAgIGNvdXQgPDwgeCA8PCBlbmRsOwogICAgeCA9IDU7CiAgICBuZXcoJngpQjsgLy8gQ2FsbCBmb3IgZGVmYXVsdCBjb25zdHJ1Y3RvcgogICAgY291dCA8PCB4IDw8IGVuZGw7CiAgICB4ID0gNTsKICAgIG5ldygmeClCKCk7IC8vIENhbGwgZm9yIGRlZmF1bHQgY29uc3RydWN0b3IgKyBWYWx1ZSBpbml0aWFsaXphdGlvbgogICAgY291dCA8PCB4IDw8IGVuZGw7CiAgICByZXR1cm4gMDsgCn0g