Index: include/new
===================================================================
--- include/new	(revision 193135)
+++ include/new	(working copy)
@@ -122,8 +122,12 @@
 
 _LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz)
 #if !__has_feature(cxx_noexcept)
+#if defined(_LIBCPP_MSVC)
+    throw(...)
+#else
     throw(std::bad_alloc)
 #endif
+#endif
 ;
 _LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
 _LIBCPP_NEW_DELETE_VIS void  operator delete(void* __p) _NOEXCEPT;
@@ -131,8 +135,12 @@
 
 _LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz)
 #if !__has_feature(cxx_noexcept)
+#if defined(_LIBCPP_MSVC)
+    throw(...)
+#else
     throw(std::bad_alloc)
 #endif
+#endif
 ;
 _LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
 _LIBCPP_NEW_DELETE_VIS void  operator delete[](void* __p) _NOEXCEPT;
Index: src/new.cpp
===================================================================
--- src/new.cpp	(revision 193135)
+++ src/new.cpp	(working copy)
@@ -45,8 +45,12 @@
 void *
 operator new(std::size_t size)
 #if !__has_feature(cxx_noexcept)
+#if defined(_LIBCPP_MSVC)
+    throw(...)
+#else
     throw(std::bad_alloc)
 #endif
+#endif
 {
     if (size == 0)
         size = 1;
@@ -91,8 +95,12 @@
 void*
 operator new[](size_t size)
 #if !__has_feature(cxx_noexcept)
+#if defined(_LIBCPP_MSVC)
+    throw(...)
+#else
     throw(std::bad_alloc)
 #endif
+#endif
 {
     return ::operator new(size);
 }
