#include <iostream>
using namespace std;
static void testDifferentAnd()
{
const int a = 1, b = 2;
cout << noboolalpha << (a&b) << (a&&b) << endl;
}
struct A
{
static inline int livingInstances;
A() { cout << "A::A()\n"; livingInstances++; }
~A() { cout << "A::~A()\n"; livingInstances--; }
};
int main() {
{
cout << string(10, '-') << "1:\n";
testDifferentAnd();
A a();
}
{
cout << string(10, '-') << "2:\n";
A a;
{
A a{};
}
}
{
cout << string(10, '-') << "3:\n";
A a[2];
{
const A& a = A();
}
}
{
cout << string(10, '-') << "4:\n";
A* a2 = new A();
A* a3 = new A[2];
}
{
cout << string(10, '-') << "5:\n";
A* a4 = new A;
A* a5 = static_cast<A*>(malloc(sizeof(A)));
}
cout << string(10, '-') << "6:\n";
cout << A::livingInstances << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdGF0aWMgdm9pZCB0ZXN0RGlmZmVyZW50QW5kKCkKewogICAgY29uc3QgaW50IGEgPSAxLCBiID0gMjsKICAgIGNvdXQgPDwgbm9ib29sYWxwaGEgPDwgKGEmYikgPDwgKGEmJmIpIDw8IGVuZGw7Cn0Kc3RydWN0IEEKewogICAgc3RhdGljIGlubGluZSBpbnQgbGl2aW5nSW5zdGFuY2VzOwogICAgQSgpIHsgY291dCA8PCAiQTo6QSgpXG4iOyBsaXZpbmdJbnN0YW5jZXMrKzsgfQogICAgfkEoKSB7IGNvdXQgPDwgIkE6On5BKClcbiI7IGxpdmluZ0luc3RhbmNlcy0tOyB9Cn07CmludCBtYWluKCkgewogICAgewogICAgICAgIGNvdXQgPDwgc3RyaW5nKDEwLCAnLScpIDw8ICIxOlxuIjsKICAgICAgICB0ZXN0RGlmZmVyZW50QW5kKCk7CiAgICAgICAgQSBhKCk7CiAgICB9CiAgICB7CiAgICAgICAgY291dCA8PCBzdHJpbmcoMTAsICctJykgPDwgIjI6XG4iOwogICAgICAgIEEgYTsKICAgICAgICB7CiAgICAgICAgICAgIEEgYXt9OwogICAgICAgIH0KICAgIH0KICAgIHsKICAgICAgICBjb3V0IDw8IHN0cmluZygxMCwgJy0nKSA8PCAiMzpcbiI7CiAgICAgICAgQSBhWzJdOwogICAgICAgIHsKICAgICAgICAgICAgY29uc3QgQSYgYSA9IEEoKTsKICAgICAgICB9CiAgICB9CiAgICB7CiAgICAgICAgY291dCA8PCBzdHJpbmcoMTAsICctJykgPDwgIjQ6XG4iOwogICAgICAgIEEqIGEyID0gbmV3IEEoKTsKICAgICAgICBBKiBhMyA9IG5ldyBBWzJdOwogICAgfQogICAgewogICAgICAgIGNvdXQgPDwgc3RyaW5nKDEwLCAnLScpIDw8ICI1OlxuIjsKICAgICAgICBBKiBhNCA9IG5ldyBBOwogICAgICAgIEEqIGE1ID0gc3RhdGljX2Nhc3Q8QSo+KG1hbGxvYyhzaXplb2YoQSkpKTsKICAgIH0KICAgIGNvdXQgPDwgc3RyaW5nKDEwLCAnLScpIDw8ICI2OlxuIjsKICAgIGNvdXQgPDwgQTo6bGl2aW5nSW5zdGFuY2VzIDw8IGVuZGw7Cn0K