# std::experimental::shared_future<T>::shared_future

From cppreference.com
< cpp‎ | experimental‎ | shared future

shared_future() noexcept; | (1) |
shared_future( std::experimental::shared_future <T>&& f) noexcept; | (2) |
shared_future(const std::experimental::shared_future <T>& f); | (3) |
shared_future( std::experimental::future < std::experimental::shared_future <T>> && other) noexcept; | (4) |
shared_future( std::experimental::future <T>&& f) noexcept; | (5) |

1) Default constructor. Constructs an empty `shared_future` object that does not refer to a shared state.
2) Constructs a `shared_future` object, transferring the shared state held by `f`, if any. After construction, f.valid() is false.
3) Constructs a shared future that refers to the same shared state as `f`, if any.
4) Unwrapping constructor. Constructs a `shared_future` object from the shared state referred to by `other`, if any. If `other.valid() == false` prior to this call, the constructed `shared_future` object is empty. Otherwise, the resulting `shared_future` object becomes ready when one of the following happens:

- other and other.get() are both ready. The value or exception from other.get() is stored in the shared state associated with the resulting `shared_future` object.
- other is ready, but other.get() is invalid. An exception of type std::future_error with an error condition of std::future_errc::broken_promise is stored in the shared state associated with the resulting `shared_future` object.

After this constructor returns, valid() is equal to the value of other.valid() prior to this call, and other.valid() == false.
5) Constructs a `shared_future` object, transferring the shared state held by `f`, if any. After construction, f.valid() is false.

### Parameters

f | - | another future object to initialize with
other | - | A `std::experimental::future` object to unwrap

### Example

| This section is incomplete Reason: no example

### Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR | Applied to | Behavior as published | Correct behavior
--- | --- | --- | ---
LWG 2697 | Concurrency TS | behavior of unwrapping constructor is unclear with an invalid `future` | constructs an empty `future`

### See also

(constructor) | constructs the future object (public member function of `std::shared_future<T>`)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/shared_future/shared_future&oldid=98650"