Boost logo

Boost Users :

Subject: Re: [Boost-users] Can I return std::unique_ptr in a boost::future?
From: Aaron_Wright_at_[hidden]
Date: 2013-11-15 13:17:33


Upgrading to 1.55 and BOOST_THREAD_VERSION=4 fixed the issue. Thanks.

---
Aaron Wright
From:   Aaron_Wright_at_[hidden]
To:     boost-users_at_[hidden]
Date:   11/15/2013 08:14 AM
Subject:        Re: [Boost-users] Can I return std::unique_ptr in a 
boost::future?
Sent by:        "Boost-users" <boost-users-bounces_at_[hidden]>
Is this code expected to work then? I just need to upgrade my boost? I'm 
currently using 1.49. I just want to make sure before I go through the 
work of upgrading boost.
---
Aaron Wright
From:   "Vicente J. Botet Escriba" <vicente.botet_at_[hidden]>
To:     boost-users_at_[hidden]
Date:   11/14/2013 11:28 PM
Subject:        Re: [Boost-users] Can I return std::unique_ptr in a 
boost::future?
Sent by:        "Boost-users" <boost-users-bounces_at_[hidden]>
Le 15/11/13 02:05, Aaron_Wright_at_[hidden] a écrit :
> I'm trying to return a std::unique_ptr in a boost::future. I can't get 
it
> to compile. Is it possible? The code wraps a packaged_task in a functor 
to
> make it copyable enough to pass to a boost::asio::io_service, where the
> work will be done in another thread. The code works for other return 
types
> that are copyable.
>
> This is what I have for a small test case:
>
> std::unique_ptr< int > get_int_impl(int i)
> {
>     return std::unique_ptr< int >(new int(i));
> }
>
> std::unique_ptr< int > get_int(int i)
> {
>     typedef boost::packaged_task< std::unique_ptr< int > > Task;
>
>     boost::shared_ptr< Task > task = boost::make_shared< Task
>> (boost::bind(&get_int_impl, 42));
>     boost::unique_future< std::unique_ptr< int > > future =
> task->get_future(); // <--- Error from this line.
>
>     m_service.post(boost::bind(&Task::operator(), task));
>
>     return future.get();
> }
>
> BOOST_AUTO_TEST_CASE(test_get_int)
> {
>     BOOST_CHECK_EQUAL(*get_int(42), 42);
> }
>
> The error:
>
> boost/thread/future.hpp(239): error C2248:
> 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member 
declared
> in class 'std::unique_ptr<_Ty>'
> ---
>
>
Hi, please try defining BOOST_VERSION 4 and using boost::future instead 
and let me know.
Best,
Vicente
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users

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