Aligned allocation fix for clang-cl (#1988)

diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index 3d4a759..ad22531 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -591,7 +591,7 @@
             if (type->operator_new) {
                 vptr = type->operator_new(type->type_size);
             } else {
-                #ifdef __cpp_aligned_new
+                #if defined(__cpp_aligned_new) && (!defined(_MSC_VER) || _MSC_VER >= 1912)
                     if (type->type_align > __STDCPP_DEFAULT_NEW_ALIGNMENT__)
                         vptr = ::operator new(type->type_size,
                                               std::align_val_t(type->type_align));
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 513ceed..d95d61f 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -1003,7 +1003,7 @@
 
 inline void call_operator_delete(void *p, size_t s, size_t a) {
     (void)s; (void)a;
-    #ifdef __cpp_aligned_new
+    #if defined(__cpp_aligned_new) && (!defined(_MSC_VER) || _MSC_VER >= 1912)
         if (a > __STDCPP_DEFAULT_NEW_ALIGNMENT__) {
             #ifdef __cpp_sized_deallocation
                 ::operator delete(p, s, std::align_val_t(a));