boost::promise (so does std::promise) only supports set_value/exception and their at_thread_exit variants, while the at_thread_exit variants support deferred notification, but the point to trigger the notification is restricted to thread-exit. This is not sufficient for, e.g. coroutine usage.

This is the same problem as shown in this post:
https://www.reddit.com/r/cpp/comments/4ctj2a/visual_studio_2015_update_2_co_awaitco_return/

If you want to write a "correct" adaptor for boost::future, currently you have to use extra storage when you get the return-value from the coroutine, and set the promise until final_suspend is reached.

To efficiently address the problem, we need something like:
* promise::set_value_deferred
* promise::set_exception_deferred
* promise::notify_deferred

Thoughts?