#include <iostream>
using namespace std;
class Fuckable {
public:
Fuckable() =default;
void fuck() { fucked = true; }
bool is_fucked() { return fucked; }
private:
bool fucked {false};
};
class Person {
public:
Person(std::string n) :name {n} {}
protected:
std::string name;
};
class Woman : public Fuckable, public Person {
public:
Woman(std::string n) :Person {n} {}
void say() {
if (this->is_fucked())
std::cout << this->name << " says: " <<
"I haven't been fucked like that since grade school!\n";
}
};
class EbarTerrorist : public Person {
public:
EbarTerrorist(std::string n) :Person {n} {}
void fuck(Fuckable& f) {
f.fuck();
}
};
int main() {
Woman ur_mom {"ur mom"};
EbarTerrorist terrorist {"that's me"};
terrorist.fuck(ur_mom);
ur_mom.say();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRnVja2FibGUgewpwdWJsaWM6CglGdWNrYWJsZSgpID1kZWZhdWx0OwoJCgl2b2lkIGZ1Y2soKSB7IGZ1Y2tlZCA9IHRydWU7IH0KCQoJYm9vbCBpc19mdWNrZWQoKSB7IHJldHVybiBmdWNrZWQ7IH0KCQpwcml2YXRlOgoJYm9vbCBmdWNrZWQge2ZhbHNlfTsKfTsKCmNsYXNzIFBlcnNvbiB7CnB1YmxpYzoKCVBlcnNvbihzdGQ6OnN0cmluZyBuKSA6bmFtZSB7bn0ge30KcHJvdGVjdGVkOgoJc3RkOjpzdHJpbmcgbmFtZTsKfTsKCmNsYXNzIFdvbWFuIDogcHVibGljIEZ1Y2thYmxlLCBwdWJsaWMgUGVyc29uIHsKcHVibGljOgoJV29tYW4oc3RkOjpzdHJpbmcgbikgOlBlcnNvbiB7bn0ge30KCQoJdm9pZCBzYXkoKSB7CgkJaWYgKHRoaXMtPmlzX2Z1Y2tlZCgpKQoJCQlzdGQ6OmNvdXQgPDwgdGhpcy0+bmFtZSA8PCAiIHNheXM6ICIgPDwKCQkJIkkgaGF2ZW4ndCBiZWVuIGZ1Y2tlZCBsaWtlIHRoYXQgc2luY2UgZ3JhZGUgc2Nob29sIVxuIjsKCX0KfTsKCmNsYXNzIEViYXJUZXJyb3Jpc3QgOiBwdWJsaWMgUGVyc29uIHsKcHVibGljOgoJRWJhclRlcnJvcmlzdChzdGQ6OnN0cmluZyBuKSA6UGVyc29uIHtufSB7fQoJCgl2b2lkIGZ1Y2soRnVja2FibGUmIGYpIHsKCQlmLmZ1Y2soKTsKCX0KfTsKCmludCBtYWluKCkgewoJV29tYW4gdXJfbW9tIHsidXIgbW9tIn07CglFYmFyVGVycm9yaXN0IHRlcnJvcmlzdCB7InRoYXQncyBtZSJ9OwoJdGVycm9yaXN0LmZ1Y2sodXJfbW9tKTsKCXVyX21vbS5zYXkoKTsKCXJldHVybiAwOwp9