US 98, US 99

llvm-svn: 111542
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 1102fbbd6772223d4c87b6d3c5ca07fab6125302
diff --git a/include/tuple b/include/tuple
index 50b6bfa..b1136e5 100644
--- a/include/tuple
+++ b/include/tuple
@@ -72,6 +72,7 @@
 const unspecified ignore;
 
 template <class... T> tuple<V...>  make_tuple(T&&...);
+template <class... T> tuple<ATypes...> forward_as_tuple(T&&...);
 template <class... T> tuple<T&...> tie(T&...);
 template <class... T, class... U> tuple<T..., U...> tuple_cat(const tuple<T...>&, const tuple<U...>&);
 template <class... T, class... U> tuple<T..., U...> tuple_cat(tuple<T...>&&, const tuple<U...>&);
@@ -621,6 +622,14 @@
     return tuple<typename __make_tuple_return<_Tp>::type...>(_STD::forward<_Tp>(__t)...);
 }
 
+template <class... _Tp>
+inline
+tuple<_Tp&&...>
+forward_as_tuple(_Tp&&... __t)
+{
+    return tuple<_Tp&&...>(_STD::forward<_Tp>(__t)...);
+}
+
 template <size_t _I>
 struct __tuple_equal
 {