5 лет спустя, есть ли что-нибудь лучше, чем «Самые быстрые из возможных делегатов C ++»?

Я знаю, что тема «делегатов C ++» уже зарезана, и оба http://www.codeproject.com и http://stackoverflow.com подробно осветите вопрос.

Как правило, кажется, что самый быстрый делегат Дона Клагстона - лучший выбор для многих людей. Есть несколько других популярных.

Однако я заметил, что большинство из этих статей старые (около 2005 года), и многие дизайнерские решения, похоже, были сделаны с учетом старых компиляторов, таких как VC7.

Мне нужна очень быстрая реализация делегирования для аудиоприложения.

Мне все еще нужно, чтобы он был переносимым (Windows, Mac, Linux), но я использую только современные компиляторы (VC9, тот, что в VS2008 SP1 и GCC 4.5.x).

Мои основные критерии:

  • это должно быть быстро!
  • он должен быть совместим с более новыми версиями компиляторов. У меня есть некоторые сомнения насчет реализации Дона, потому что он явно заявляет, что это не соответствует стандарту.
  • необязательно, KISS-синтаксис и простота использования неплохо иметь
  • многоадресную рассылку, хотя я убежден, что его действительно легко построить на основе любой библиотеки делегатов

Кроме того, мне действительно не нужны экзотические функции. Мне просто нужен старый добрый указатель на метод. Нет необходимости поддерживать статические методы, бесплатные функции и тому подобное.

На сегодняшний день какой рекомендуемый подход? Все еще пользуетесь версией Дона ? Или существует «консенсус сообщества» по поводу другого варианта?

Я действительно не хочу использовать Boost.signal / signal2, потому что это неприемлемо с точки зрения производительности. Зависимость от QT также недопустима.

Кроме того, я видел несколько новых библиотек во время поиска в Google, например, cpp-events , но я не мог найти никаких отзывов от пользователей, в том числе SO.

72
задан Jeffrey Bosboom 7 May 2015 в 19:05
поделиться