tuple was accidentally lacking a valid copy assignment operator.  It went undetected because I had failed to test assigning from a const lvalue.  This fixes http://llvm.org/bugs/show_bug.cgi?id=11921

llvm-svn: 150613
diff --git a/libcxx/include/tuple b/libcxx/include/tuple
index d5c6ad0..2bdb05f 100644
--- a/libcxx/include/tuple
+++ b/libcxx/include/tuple
@@ -500,6 +500,14 @@
             return *this;
         }
 
+        _LIBCPP_INLINE_VISIBILITY
+        __tuple_impl&
+        operator=(const __tuple_impl& __t)
+        {
+            __swallow(__tuple_leaf<_Indx, _Tp>::operator=(static_cast<const __tuple_leaf<_Indx, _Tp>&>(__t).get())...);
+            return *this;
+        }
+
     _LIBCPP_INLINE_VISIBILITY
     void swap(__tuple_impl& __t)
         _NOEXCEPT_(__all<__is_nothrow_swappable<_Tp>::value...>::value)