sigc::slot boost::??
От: Petrovich_  
Дата: 17.07.11 07:15
Оценка:
Добрый день.
В данный момент занят переводом довольно большого объема кода с sigc на boost.
И если сигналы перешли относительно безболезненно, то со слотами возникли некоторые вопросы.
В целом проблемы решены, но терзают меня смутные сомненья, что оптимально.
Итак:
sigc::slot становится boost::function, sigc::bind соответсвтенно boost::bind.
Проблема первая:
Пустые boost::function бросают эксепшен, sigc::slot возвращает чего-то, повидимому return_value().
Решил инициализацией функций в виде (boost::lambda::do_nothing_action(), return_value());
Проблема вторая:
sigc::bind_return, т.е. надо забиндитить вызов функции, а возвращать что-то другое, в моем случае это всегда константы.
Решение ((boost::lambda::bind(function),return_value()))
И последнее, уж не помню зачем, но понадобилося мне предикат, который просто возвращал бы обратно переданное ему значение.
Т.е. что-то реализующее.
T operator(const &T){return T;}
Вопрос скорее уже академического плана, но как лучше реализовать такое средствами stl/boost.
В голову приходит мысль забиндить value | 0, но не у всех value может быть operator |.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.