void swap( packaged_task & other) noexcept { std::swap( obtained_, other.obtained_); task_.swap( other.task_); }
void swap( promise_base & other) noexcept { std::swap( obtained_, other.obtained_); future_.swap( other.future_); }