Быстрый делегат
От: monah_tuk Пират http://htrd.su
Дата: 28.10.13 05:08
Оценка:
Не совсем уверен, что в нужный форум, но всё же.

Прочитал статью: http://www.codeproject.com/Articles/11015/The-Impossibly-Fast-C-Delegates?rp=/KB/cpp/ImpossiblyFastCppDelegate/SRDelegates.zip

решение понравилось, особенно в той части, что не нужно аллоцировать память. Но не очень понравился синтаксис передачи адреса функции через параметр шаблона.

Немного поразмыслив получился такой код (если сообщество затребует, помещу прямо тут):
* Главный файл (delegate.h): http://pastebin.com/BfE1Py5v
* Реализация (delegate_impl.h): http://pastebin.com/pQKESLGi

Использование:
delegate(void()) d1 = make_delegate(&foo);
delegate(int(int)) d2 = make_delegate(&obj, &SomeObj::baz);

Кто какие проблемы видит? Мне не нравится reintepret_cast во враппере свободной функции... Может есть другие решения?

PS если в реализации delegate_impl.h убрать все макросы, получится реализация для delegate(R())
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.