Boost logo

Boost Users :

Subject: Re: [Boost-users] [Thread] Can't compile package_task code with 1.54
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-06-01 07:53:09


Le 01/06/13 12:34, Szymon Gatner a écrit :
> Hi Vincente,
>
> I have found the error. My tests don't test for packaged_task<void()>.
>
> The following patch should fix the issue (see attached file)
>
> Please could you apply it a tell me if it fix with your compiler?
>
>
> I am happy to confirm the fix, really appreciate so quick response
> from you. To clarify: I was using boost_1_54_0_beta1_rc1.7z from beta
> announcement.
>
>
> Btw: I am using a workaround for packaged_task to be able store it in
> std/boost::function:
>
> typedef boost::packaged_task<Ret()> Task;
> typedef boost::shared_ptr<Task> TaskPtr;
> TaskP task(new Task(f));
> addTask(boost::bind(&Task::operator (), task));
>
> where:
>
> void addTask(boost::function<void()> task);
>
>
> not a problem of course but with 1.54 beta I was still not able to
> just move packaged_task to function directly:
>
> boost::packaged_task<void()> t1;
>
> boost::function<void()> f2(boost::move(t1));
>
> gives:
>
> Error1error C2248:
> 'boost::packaged_task<<unnamed-symbol>>::packaged_task' : cannot
> access private member declared in class
> 'boost::packaged_task<<unnamed-symbol>>'d:\devel\boost_1_54_0_beta1\boost\function\function_template.hpp1070ConsoleApplication2
>
> same error with std::function.
>
> Is this an issue with packaged_task or a std/boost function
> implementations. I think boost::functions are not movable so they
> probably try to copy packaged_task but not sure why it also doesn't
> work with std::function.
>
>
IMO boost::function doesn't supports move semantics. I will take a look
at std::function. Could you post the error with std::function?

Best,
Vicente



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net