    #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);
        Word w;
        announce(w);
    }
