Explain "shared state", and provide links to the explanation wherever it's referenced. We don't need the doc to enumerate 'R& future<R&>::get()' or 'void future<void>::get()' separately from 'R future<R>::get()': all three specializations are exactly as the reader expects, given the generic template (unlike shared_future, where it's useful to spell them out). Encapsulate some of the necessary redundancies between future and shared_future documentation. Explain the effect of promise::set_value() vs. promise::set_exception() on each of [shared_]future::get(), get_exception_ptr(), wait(), wait_for() and wait_until(). Add get_exception_ptr() method to shared_future exposition class. Clarify distinction between shared_future move assignment vs. copy assignment. Document that async() is now variadic. Document its StackAllocator overload, and the effect of passing StackAllocator. Remove warning about launch policy 'deferred' since async() has no launch policy parameter.
boost.fiber
boost.fiber provides a framework for micro-/userland-threads (fibers) scheduled cooperativly. The API contains classes and functions to manage and synchronize fibers similiar to boost.thread.
A fiber is able to store the current execution state, including all registers and CPU flags, the instruction pointer, and the stack pointer and later restore this state. The idea is to have multiple execution paths running on a single thread using a sort of cooperative scheduling (threads are preemptively scheduled) - the running fiber decides explicitly when its yields to allow another fiber to run (context switching).
A context switch between threads costs usally thousends of CPU cycles on x86 compared to a fiber switch with less than 100 cycles. A fiber can only run on a single thread at any point in time.
Building: Detailed instructions can be found at https://svn.boost.org/trac/boost/wiki/TryModBoost.
boost.fiber is C++14-only!