Я знаю, что тема "делегатов С++" была доведена до смерти, и http://www.codeproject.com и /qaru.site/... глубоко охватывают вопрос.
Как правило, кажется, что Дон Клугстон - самый быстрый возможный делегат - это первый выбор для многих людей. Есть еще несколько популярных.
Тем не менее, я заметил, что большинство из этих статей являются старыми (около 2005 года), и многие варианты дизайна, похоже, были сделаны с учетом старых компиляторов, таких как VC7.
Мне нужна очень быстрая реализация делегата для аудио приложения.
Мне все же нужно, чтобы он был переносимым (Windows, Mac, Linux), но я использую только современные компиляторы (VC9, тот, что в VS2008 SP1 и GCC 4.5.x).
Мои основные критерии:
- он должен быть быстрым!
- он должен быть совместим с новыми версиями компиляторов. У меня есть некоторые сомнения по поводу реализации Don, потому что он явно заявляет, что он не соответствует стандарту.
- Необязательно, KISS-синтаксис и простота использования приятно иметь
- многоадресная рассылка будет приятной, хотя я убежден, что ее очень легко создать в любой библиотеке делегатов.
Кроме того, мне действительно не нужны экзотические функции. Мне просто нужна хорошая старая вещь с указателем на метод. Нет необходимости поддерживать статические методы, бесплатные функции или что-то в этом роде.
На сегодняшний день, каков рекомендуемый подход? Все еще используйте Don version? Или существует "консенсус сообщества" по поводу другого варианта?
Я действительно не хочу использовать Boost.signal/signal2, потому что это не приемлемо с точки зрения производительности. Зависимость от QT также неприемлема.
Кроме того, я видел несколько новых библиотек во время поиска в googling, например cpp-events, но я не мог найти отзывов от пользователей, в том числе на SO.