I'm really happy about this discussion here. Can you clarify what you mean by a future being type erased? You don't mean to say a future is a future<any>, do you?
Presumably that the type of the future does not contain the type of the callable function object it contains, thus requiring dynamic memory allocation and indirection.
An interesting mind binder is if one makes ASIO's async_result vtabled i.e. a listener class.
That would make async_result ABI stable, and eliminate most of the rationale for improving futures, arguably even the present approach by Microsoft and the committee on how to do resumable functions.
I am personally surprised that Chris hasn't proposed this yet in one of this N-papers proposing the ASIO way of doing async instead of the current approach by the committee :)
Again, I don't see the 'current way' and 'Chris' way' as contradicting. They are orthogonal and address different things. Regards Hartmut --------------- http://boost-spirit.com http://stellar.cct.lsu.edu