10 Jan 15:15
Re: Futures Review - typeof registering
vicente.botet <vicente.botet <at> wanadoo.fr>
2009-01-10 14:15:32 GMT
2009-01-10 14:15:32 GMT
Hi,
My use case is a function that request an asynchronous executor to fork all the functions given as parameter
and returns a quite complex type
template< typename AE, typename F1, ..., typename Fn>
typename result_of::fork_all<AE, fusion::tuple<F1,..., Fn> >::type
fork_all( AE& ae, F1 f1, ..., Fn fn );
and used as follows:
bith::launcher ae;
typedef bith::result_of::fork_all<bith::launcher ,boost::fusion::tuple<int(*)(),int(*)()>
>::type auto_type;
auto_type handles= bith::fork_all(ae, simple_thread, simple_thread);
For a launcher asynchronous executor,
result_of::fork_all<AE, fusion::tuple<F1,..., Fn> >::type
is a
boost::fusion::tuple<unique_future<result_of<Fk() ...>.
If we register unique_future on the Boost.Typeof library, we are able to write
BOOST_AUTO(handles, bith::fork_all(ae, simple_thread, simple_thread));
which is much simpler.
Next follows the contents of the file. Could this file be added to the Boost.Future librarie?
Thanks,
Vicente
====================
// boost/futures/typeof/future.hpp
#ifndef BOOST_FUTURES_TYPEOF_FUTURE__HPP
#define BOOST_FUTURES_TYPEOF_FUTURE__HPP
#include <boost/futures/future.hpp>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(boost::interthreads::unique_future, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(boost::interthreads::shared_future, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(boost::interthreads::promise, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(boost::interthreads::packaged_task, 1)
#endif
====================
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
RSS Feed