Как только берешься за Asio, так сразу фишки из С++11/14 становятся ну очень полезными:
class handler_t : public std::enable_shared_from_this< handler_t > { ... template< typename H, typename... T > auto wrap_handler( H handler, T && ...tail ) { return m_strand.wrap( std::bind( handler, shared_from_this(), std::forward<T>(tail)... ) ); } ... void activate( const endpoint & receiver_endpoint ) { m_timer.expires_from_now( std::chrono::seconds(2) ); m_timer.async_wait( wrap_handler( &handler_t::on_timer, _1 ) ); m_socket.async_connect( receiver_endpoint, wrap_handler( &handler_t::on_connect, _1 ) ); } ... } |
Не просто было бы в рамках С++03 написать вот такой простенький wrap_handler.
PS. В тему будет и вот эта заметка двухлетней давности. Отрадно отметить, что высказанные тогда надежды на бодрое развитие C++14 и C++17 пока оказались не напрасными.
Комментариев нет:
Отправить комментарий