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:

Error 1 error 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.hpp 1070 ConsoleApplication2

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