#include <iostream>
using namespace std;
struct List
{
List *next = 0;
};
List & operator ++ (List &x, int)
{
x = *x.next;
return x;
}
int main()
{
List *lst = new List();
lst->next = new List();
cout << lst << ' ' << lst->next << endl;
(*lst)++;
cout << lst << ' ' << lst->next << endl;
// Это упадёт
//(*lst)++;
//cout << lst << endl;
List lst2;
lst2.next = new List();
cout << &lst2 << ' ' << lst2.next << endl;
lst2++;
cout << &lst2 << ' ' << lst2.next << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBMaXN0CnsKICBMaXN0ICpuZXh0ID0gMDsKfTsKCkxpc3QgJiBvcGVyYXRvciArKyAoTGlzdCAmeCwgaW50KQp7CiAgeCA9ICp4Lm5leHQ7CiAgcmV0dXJuIHg7Cn0KCmludCBtYWluKCkKewogIExpc3QgKmxzdCA9IG5ldyBMaXN0KCk7CiAgbHN0LT5uZXh0ID0gbmV3IExpc3QoKTsKICAKICBjb3V0IDw8IGxzdCA8PCAnICcgPDwgbHN0LT5uZXh0IDw8IGVuZGw7CgogICgqbHN0KSsrOwogIGNvdXQgPDwgbHN0IDw8ICcgJyA8PCBsc3QtPm5leHQgPDwgZW5kbDsKCiAgLy8g0K3RgtC+INGD0L/QsNC00ZHRggogIC8vKCpsc3QpKys7CiAgLy9jb3V0IDw8IGxzdCA8PCBlbmRsOwoKICBMaXN0IGxzdDI7CiAgbHN0Mi5uZXh0ID0gbmV3IExpc3QoKTsKCiAgY291dCA8PCAmbHN0MiA8PCAnICcgPDwgbHN0Mi5uZXh0IDw8IGVuZGw7CgogIGxzdDIrKzsKICBjb3V0IDw8ICZsc3QyIDw8ICcgJyA8PCBsc3QyLm5leHQgPDwgZW5kbDsKCiAgcmV0dXJuIDA7Cn0=