Add CMake build and fix major Linux blockers.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@121510 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/utility b/include/utility
index f8a8fc5..c65b59e 100644
--- a/include/utility
+++ b/include/utility
@@ -222,6 +222,8 @@
               second(_STD::forward<_U2>(__u2))
             {}
 
+#ifndef _LIBCPP_HAS_NO_VARIADICS
+
     template<class _Tuple,
              class = typename enable_if<__tuple_convertible<_Tuple, pair>::value>::type>
         _LIBCPP_INLINE_VISIBILITY
@@ -232,7 +234,7 @@
                                    typename __make_tuple_types<_Tuple>::type>::type>(get<1>(__p)))
             {}
 
-#ifndef _LIBCPP_HAS_NO_VARIADICS
+
 
     template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2>
         _LIBCPP_INLINE_VISIBILITY
@@ -243,8 +245,6 @@
                    typename __make_tuple_indices<sizeof...(_Args2) >::type())
             {}
 
-#endif  // _LIBCPP_HAS_NO_VARIADICS
-
     template <class _Tuple,
               class = typename enable_if<__tuple_assignable<_Tuple, pair>::value>::type>
         _LIBCPP_INLINE_VISIBILITY
@@ -259,6 +259,8 @@
             return *this;
         }
 
+#endif  // _LIBCPP_HAS_NO_VARIADICS
+
 #else  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
     template<class _U1, class _U2>
         _LIBCPP_INLINE_VISIBILITY pair(const pair<_U1, _U2>& __p)