[futures.shared_future]

llvm-svn: 112990
diff --git a/libcxx/src/future.cpp b/libcxx/src/future.cpp
index a008276..924a684 100644
--- a/libcxx/src/future.cpp
+++ b/libcxx/src/future.cpp
@@ -240,4 +240,21 @@
     __state_->set_exception_at_thread_exit(__p);
 }
 
+shared_future<void>::~shared_future()
+{
+    if (__state_)
+        __state_->__release_shared();
+}
+
+shared_future<void>&
+shared_future<void>::operator=(const shared_future& __rhs)
+{
+    if (__rhs.__state_)
+        __rhs.__state_->__add_shared();
+    if (__state_)
+        __state_->__release_shared();
+    __state_ = __rhs.__state_;
+    return *this;
+}
+
 _LIBCPP_END_NAMESPACE_STD