#include <iostream>
struct IAudible {
virtual void sound() const = 0;
};
struct Explosion : public IAudible {
virtual void sound() const override { std::cout << "Boom\n"; }
};
struct Word : public IAudible {
};
void announce(const IAudible& audible) {
audible.sound();
}
int main() {
Explosion e;
announce(e);
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCiAgICBzdHJ1Y3QgSUF1ZGlibGUgewogICAgICAgIHZpcnR1YWwgdm9pZCBzb3VuZCgpIGNvbnN0ID0gMDsKICAgIH07CgogICAgc3RydWN0IEV4cGxvc2lvbiA6IHB1YmxpYyBJQXVkaWJsZSB7CiAgICAgICAgdmlydHVhbCB2b2lkIHNvdW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyBzdGQ6OmNvdXQgPDwgIkJvb21cbiI7IH0KICAgIH07CgogICAgc3RydWN0IFdvcmQgOiBwdWJsaWMgSUF1ZGlibGUgewogICAgfTsKCiAgICB2b2lkIGFubm91bmNlKGNvbnN0IElBdWRpYmxlJiBhdWRpYmxlKSB7CiAgICAgICAgYXVkaWJsZS5zb3VuZCgpOwogICAgfQoKICAgIGludCBtYWluKCkgewogICAgICAgIEV4cGxvc2lvbiBlOwogICAgICAgIGFubm91bmNlKGUpOwogICAgfQo=