Boost logo

Boost :

Subject: [boost] [future William proposal] packaged_task do not accept boost::ref of a nullary functor
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2009-01-03 12:53:09


packaged_task do not accept boost::ref to nullary functions while thread allows it. Shouldn't packaged_task accept them? How can the user workaround this issue? How thread solved this issue?

Thanks in advance,
Compiler error:

../../../../boost/futures/future.hpp: In member function `void boost::detail::task_object<R, F>::do_run() [with R = int, F = boost::reference_wrapper<non_copyable_functor>]':
test.cpp:250: instantiated from here
../../../../boost/futures/future.hpp:1206: error: no match for call to `(boost::reference_wrapper<non_copyable_functor>) ()'

Here it is the code:
struct non_copyable_functor
    : boost::noncopyable
    unsigned value;
    typedef unsigned result_type;
    unsigned operator()()
        return value;
void do_test_creation_through_reference_wrapper()
    non_copyable_functor f;
    boost::packaged_task<unsigned > tsk(boost::ref(f));
    //boost::future<unsigned > act = tsk.get_future();
    //boost::thread thr(boost::move(tsk));
    //unsigned res = act.get();
    //BOOST_CHECK_EQUAL(res, 999u);
    //BOOST_CHECK_EQUAL(f.value, 999u);

Vicente Juan Botet Escribá

Boost list run by bdawes at, gregod at, cpdaniel at, john at