Boost logo

Boost :

Subject: Re: [boost] future<>::then() Error returning future<void> (on trunk)
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-04-07 18:06:38


Le 07/04/13 23:41, Fernando Pelliccioni a écrit :
> On Mon, Apr 1, 2013 at 2:09 PM, Vicente J. Botet Escriba <
> vicente.botet_at_[hidden]> wrote:
>
>> Le 22/01/13 22:56, Vicente Botet a écrit :
>>
>> Fernando Pelliccioni wrote
>>>> Hi Vicente, hi all,
>>>>
>>>> I noticed that in the trunk there is a implementation of
>>>> future<>::then().
>>>> Thank you very much for your efforts to implement it!
>>>>
>>> Hi Fernando,
>>>
>>> I have started with a restricted implementation. While trying to cover
>>> with
>>> the whole requirements I didn't reach to get correct implementation. This
>>> is
>>> way this new feature is not delivered yet. For the time been I don't think
>>> the current implementation is ready for production code.
>>>
>>>
>>> The following example, compiles OK
>>>> boost::future
>>>> <int>
>>>> f1 = boost::async([]() { return 123; });
>>>> f1.then([](boost::future
>>>> <int>
>>>> const& f) {
>>>> return std::string("");
>>>> });
>>>>
>>>>
>>>> But this one fails to compile:
>>>> boost::future
>>>> <int>
>>>> f1 = boost::async([]() { return 123; });
>>>> f1.then([](boost::future
>>>> <int>
>>>> const& f) {
>>>> });
>>>>
>>>> Here future<>::then() have to returns future
>>>> <void>
>>>> like ...
>>>>
>>>> boost::async([]() { });
>>>>
>>>> Am I right?
>>>>
>>> Yes, it should. I have no access to my development environment for this
>>> week. Could you post the compiler error?
>>>
>>>
>>> On the other hand, have you taken into account the following paper?
>>>> http://www.open-std.org/jtc1/**sc22/wg21/docs/papers/2012/**
>>>> n3451.pdf<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3451.pdf>
>>>>
>>> I read it and the mail exchanges related to this paper.
>>> Currently I didn't reached to make it working at all when the future
>>> destructor blocks, but I'm not sure this is the hidden problem as I have
>>> also other issues when the future destructor doesn't blocks.
>>>
>>> I'm really sorry that the current state is not really usable :(
>>>
>>> Hi Fernando,
>> I have reworked the future::then function, and even if it is not yet
>> complete (e.g. deferred is not implemented for c++98 compilers) it start to
>> be usable for c++11 compilers, even if BOOST_THREAD_DONT_PROVIDE_**FUTURE_INVALID_AFTER_GET
>> is not defined. BTW, joining on the async future destructor works also.
>>
>> Please could you give it a try and let me know whatever you can find that
>> doesn't works as you expect,
>>
>> Best,
>> Vicente
>>
>>
>>
> Hi Vicente,
>
> Sorry for the delay!
>
> It works fine !!
>
> Thanks!
>

Glad to hear it is working for you.
I would try to merge it to release tomorrow after running the regression
test (if there is yet time to merge).

Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk