Implementation of Observer Pattern in C++14
I'm not sure we really need a base Observable class to inherit from anymore, because with lambdas and function type erasure, this pattern has become more or less trivial.

But if you want to do it that way, I think you can simplify and generalize it a bit more, by relaxing constraints in addObserver's signature (which I renamed attach because it's the canonical name if I'm not mistaken):

#include &lt;iostream&gt;
#include &lt;functional&gt;

class Observable {
    using Callback = std::function&lt;void(void)&gt;;
    std::vector&lt;Callback&gt; notifications;
public:
    void attach(Callback c) { notifications.push_back(c); }
    void notify() { for (auto&amp; c : notifications) c(); }
};

struct Buzzer {
    void go() { std::cout &lt;&lt; "drrrr... drrrr...\n"; }
};

struct Rooster {
    void sing() { std::cout &lt;&lt; "Cocorico!\n"; }
};

struct Sun : public Observable {
    void rise() { std::cout &lt;&lt; "Waoooh! the sun's rising!\n"; notify(); }
};

int main() {
    Sun sun;
    Buzzer buzzer;
    Rooster rooster;

    sun.attach([&amp;buzzer] {buzzer.go();});
    sun.attach([&amp;rooster] {rooster.sing();});
    sun.rise();
}