diff --git a/include/__config b/include/__config
index a8991c3..e49adb4 100644
--- a/include/__config
+++ b/include/__config
@@ -1429,15 +1429,6 @@
 
 #define _LIBCPP_UNUSED_VAR(x) ((void)(x))
 
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
-#define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) \
-  template <class _Tag = void> \
-  _ClassName(typename _Tag::__allow_ctad) -> _ClassName<void>
-#else
-#define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) \
-   static_assert(true, "")
-#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES
-
 #endif // __cplusplus
 
 #endif // _LIBCPP_CONFIG
diff --git a/include/__mutex_base b/include/__mutex_base
index 6361c20..f828bea 100644
--- a/include/__mutex_base
+++ b/include/__mutex_base
@@ -107,8 +107,6 @@
     lock_guard(lock_guard const&) _LIBCPP_EQUAL_DELETE;
     lock_guard& operator=(lock_guard const&) _LIBCPP_EQUAL_DELETE;
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(lock_guard);
-
 
 template <class _Mutex>
 class _LIBCPP_TEMPLATE_VIS unique_lock
@@ -207,7 +205,6 @@
     _LIBCPP_INLINE_VISIBILITY
     mutex_type* mutex() const _NOEXCEPT {return __m_;}
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(unique_lock);
 
 template <class _Mutex>
 void
diff --git a/include/functional b/include/functional
index dd65f1b..865a281 100644
--- a/include/functional
+++ b/include/functional
@@ -3067,8 +3067,7 @@
     _ForwardIterator __first_;
     _ForwardIterator __last_;
     _BinaryPredicate __pred_;
-};
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(default_searcher);
+    };
 
 #endif // _LIBCPP_STD_VER > 14
 
diff --git a/include/iterator b/include/iterator
index b503f15..30801ea 100644
--- a/include/iterator
+++ b/include/iterator
@@ -841,7 +841,6 @@
     _LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator++()    {return *this;}
     _LIBCPP_INLINE_VISIBILITY back_insert_iterator  operator++(int) {return *this;}
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(back_insert_iterator);
 
 template <class _Container>
 inline _LIBCPP_INLINE_VISIBILITY
diff --git a/include/mutex b/include/mutex
index a7d6232..20c3ffc 100644
--- a/include/mutex
+++ b/include/mutex
@@ -546,7 +546,6 @@
 
     _MutexTuple __t_;
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(scoped_lock);
 
 #endif // _LIBCPP_STD_VER > 14
 #endif // !_LIBCPP_HAS_NO_THREADS
diff --git a/include/shared_mutex b/include/shared_mutex
index c991134..fcafd8c 100644
--- a/include/shared_mutex
+++ b/include/shared_mutex
@@ -430,7 +430,6 @@
     _LIBCPP_INLINE_VISIBILITY
     mutex_type* mutex() const _NOEXCEPT {return __m_;}
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(shared_lock);
 
 template <class _Mutex>
 void
diff --git a/include/string_view b/include/string_view
index 39ebc66..0444831 100644
--- a/include/string_view
+++ b/include/string_view
@@ -604,7 +604,6 @@
     const   value_type* __data;
     size_type           __size;
 };
-_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_string_view);
 
 
 // [string.view.comparison]
diff --git a/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/implicit_ctad.pass.cpp b/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/implicit_ctad.pass.cpp
deleted file mode 100644
index 7c4ba6a..0000000
--- a/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/implicit_ctad.pass.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// <iterator>
-
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
-// class back_insert_iterator.
-
-#include <string>
-#include <iterator>
-#include <vector>
-#include <cassert>
-#include <cstddef>
-#include <functional>
-
-#include "test_macros.h"
-
-int main(int, char**)
-{
-    {
-      std::string s;
-      std::back_insert_iterator bs(s);
-      ASSERT_SAME_TYPE(decltype(bs), std::back_insert_iterator<std::string>);
-    }
-  {
-    std::vector<int> v;
-    std::back_insert_iterator bv(v);
-    std::back_insert_iterator cp(bv);
-    ASSERT_SAME_TYPE(decltype(bv), std::back_insert_iterator<std::vector<int>>);
-    ASSERT_SAME_TYPE(decltype(cp), std::back_insert_iterator<std::vector<int>>);
-  }
-
-  return 0;
-}
diff --git a/utils/libcxx/test/config.py b/utils/libcxx/test/config.py
index 6552d30..82951b7 100644
--- a/utils/libcxx/test/config.py
+++ b/utils/libcxx/test/config.py
@@ -911,7 +911,6 @@
         self.cxx.addWarningFlagIfSupported('-Wunused-variable')
         self.cxx.addWarningFlagIfSupported('-Wunused-parameter')
         self.cxx.addWarningFlagIfSupported('-Wunreachable-code')
-        self.cxx.addWarningFlagIfSupported('-Wctad-maybe-unsupported')
         std = self.get_lit_conf('std', None)
         if std in ['c++98', 'c++03']:
             # The '#define static_assert' provided by libc++ in C++03 mode
