void sf::Font::onUpdate(const std::function<void(your-args-here)>&) is a compelling interface option to me. std::function provides all the utilities we need to easily implement this. I'm not convinced we need to support an arbitrary number of callables, at least not initially.