Skip to content
Commit ec0810e1 authored by Howard Hinnant's avatar Howard Hinnant
Browse files

I had a giant misunderstanding of what 'synchronizes with' meant in...

I had a giant misunderstanding of what 'synchronizes with' meant in [futures.async]/p5.  This invalidated the current design of async in <future>.  This is a new design, based on my new understanding, which has been confirmed on the lwg mailing list.  The summary is that ~future() (and ~shared_future()) will block when they are created from within async, and the thread hasn't finished yet.  As part of this work I created two new type traits:  __invokable<F, Args...>::value and __invoke_of<F, Args...>::type.  These are what result_of<F(Args...)> wanted to be when it grew up, but never will be. __invoke_of is carefully crafted so that it can serve as its own enable_if (type doesn't exist if the signature isn't invokable).  All of this work is C++11 only.

llvm-svn: 131639
parent b8f65e25
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment