Приведенные выше ответы великолепны, но я просто хотел бы указать на то, что вы упомянули в своем вопросе, и которое все еще имеет отношение к вашему выбору между объектами обратного вызова C ++ (в ответе Николая) и boost.
"обратный вызов будет простой функцией void (), но он может расти, вы никогда не узнаете будущее :)"
Это, вероятно, наихудшая причина лишних, ненужных функций - то есть «на тот случай, если вам это нужно». Если вы не знаете - тогда не делайте больше, чем необходимо, скорее всего, ваше предположение будет неверным, особенно к тому времени, когда оно вам понадобится.
С другой стороны, если вы знаете, что весьма вероятно, что вам понадобится функциональность очень скоро , то, возможно, стоит добавить ее.
Еще раз, чтобы повторить то, что сказал Николай - если у вас уже есть повышение в вашем проекте, и вашей команде это нравится, то используйте это, но в противном случае это может быть излишним.