Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-06-02 15:42:05

Frank Mori Hess:
> On Monday 02 June 2008 13:02 pm, Peter Dimov wrote:
>> That aside, I'm not sure why you need future_value semantics. Let's
>> assume
>> that one has a primitive
>> future<R> async( F f, A1 a1, ..., An an );
>> that schedules bind(f,a1,a2,...,an) for execution. It wouldn't be hard to
>> make it recognize when Ai is future<Bi>
> Oh, I came up with a reason that having future_value objects as inputs can
> be
> preferable to the solution you describe. Your solution forces the
> "lifted"
> functions to always take templates arguments. But template methods can't
> be
> made virtual. Also, you can't pass them to bind() without manually
> specifying all the template parameters.

Hm. I'm not sure I follow. Let's say that I have:

struct A
    virtual int f( long x ) = 0;

int g();

future<int> h( A* pa )
    return async( &A::f, pa, async( g ) );

What's the problem with the outer async recognizing that its third argument
is a future and treating it as a dependency?

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