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/memory b/include/memory
index c20e1a0..90cf3e6 100644
--- a/include/memory
+++ b/include/memory
@@ -1487,7 +1487,7 @@
 {
 };
 
-#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
 
 // uses-allocator construction
 
@@ -1505,7 +1505,7 @@
     : integral_constant<int, __uses_alloc_ctor_imp<_Tp, _Alloc, _Args...>::value>
     {};
 
-#endif  // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+#endif  // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
 
 // allocator
 
@@ -1546,6 +1546,7 @@
         {
             ::new((void*)__p) _Tp();
         }
+# if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
     template <class _A0>
         _LIBCPP_INLINE_VISIBILITY
         typename enable_if
@@ -1579,6 +1580,7 @@
         {
             ::new((void*)__p) _Tp(_STD::move(__a0));
         }
+# endif  // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
     template <class _A0, class _A1>
         _LIBCPP_INLINE_VISIBILITY
         void