vicente.botet | 10 Jan 15:15
Picon

Re: Futures Review - typeof registering

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


Gmane