Comments 2
Было бы неплохо потом сравнить ваш подход с SObjectizer, про который тут написано много и интересно.
И с Qt, где вся эта работа сделана на неблокирующих операциях.
И я снова приду с критикой отписки в самом слушателе. Вы замыкаете id по ссылке, потому что нет никакой физической возможности замкнуть по значению. А если код асинхронный и нельзя замыкать локальные переменные? Будете замыкать смарт-поинтер на специальный объект-хранилище?
Вы выбрали свой набор требований, весьма скромный, и реализовали строго его. И даже он с одной стороны избыточен и дорог для многих применений (мне например, не нужна потокобезопасность, за это я не люблю и std::shared_ptr), а с другой недостаточен.
Я люблю велосипеды, сам их пишу. Но я не продаю свой велосипед как единственно правильный, максимально простой или ещё какой-то. Он на то и велосипед, что узко заточен под мои задачи.
Реализация подписчиков в c++ — пляшем от печки чуть дальше