namespace std { template <class R> class shared_future { public: shared_future() noexcept; shared_future(const shared_future& rhs) noexcept; shared_future(future<R>&&) noexcept; shared_future(shared_future&& rhs) noexcept; ~shared_future(); shared_future& operator=(const shared_future& rhs) noexcept; shared_future& operator=(shared_future&& rhs) noexcept; // retrieving the value see below get() const; // functions to check state bool valid() const noexcept; void wait() const; template <class Rep, class Period> future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const; template <class Clock, class Duration> future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const; }; }
shared_future() noexcept;
shared_future(const shared_future& rhs) noexcept;
shared_future(future<R>&& rhs) noexcept;
shared_future(shared_future&& rhs) noexcept;
~shared_future();
shared_future& operator=(shared_future&& rhs) noexcept;
shared_future& operator=(const shared_future& rhs) noexcept;
const R& shared_future::get() const;
R& shared_future<R&>::get() const;
void shared_future<void>::get() const;
bool valid() const noexcept;
void wait() const;
template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const;
template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;