[libcxx-commits] [libcxx] 0166690 - [libc++] Remove workarounds for the lack of deduction guides in C++17
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Aug 18 05:57:38 PDT 2021
Author: Louis Dionne
Date: 2021-08-18T08:57:25-04:00
New Revision: 01666904013c1514b16ace896ba346d1273a034f
URL: https://github.com/llvm/llvm-project/commit/01666904013c1514b16ace896ba346d1273a034f
DIFF: https://github.com/llvm/llvm-project/commit/01666904013c1514b16ace896ba346d1273a034f.diff
LOG: [libc++] Remove workarounds for the lack of deduction guides in C++17
All supported compilers have supported deduction guides in C++17 for a
while, so this isn't necessary anymore.
Differential Revision: https://reviews.llvm.org/D108213
Added:
Modified:
libcxx/include/__config
libcxx/include/__functional/function.h
libcxx/include/__functional/reference_wrapper.h
libcxx/include/__iterator/iterator_traits.h
libcxx/include/__memory/shared_ptr.h
libcxx/include/__utility/pair.h
libcxx/include/array
libcxx/include/deque
libcxx/include/forward_list
libcxx/include/list
libcxx/include/map
libcxx/include/optional
libcxx/include/queue
libcxx/include/regex
libcxx/include/set
libcxx/include/stack
libcxx/include/string
libcxx/include/tuple
libcxx/include/unordered_map
libcxx/include/unordered_set
libcxx/include/vector
libcxx/test/std/containers/associative/map/map.cons/deduct.fail.cpp
libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/map/map.cons/deduct_const.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.fail.cpp
libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp
libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.fail.cpp
libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp
libcxx/test/std/containers/associative/set/set.cons/deduct.fail.cpp
libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp
libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.fail.cpp
libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp
libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.fail.cpp
libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.pass.cpp
libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.fail.cpp
libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp
libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/deque/deque.cons/deduct.fail.cpp
libcxx/test/std/containers/sequences/deque/deque.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.fail.cpp
libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/list/list.cons/deduct.fail.cpp
libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp
libcxx/test/std/containers/sequences/vector/vector.cons/deduct.fail.cpp
libcxx/test/std/containers/sequences/vector/vector.cons/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.fail.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.fail.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.fail.cpp
libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp
libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.fail.cpp
libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp
libcxx/test/std/re/re.regex/re.regex.construct/deduct.fail.cpp
libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp
libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.fail.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.pass.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_ptr.pass.cpp
libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/deduct.pass.cpp
libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp
libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp
libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_deduction.pass.cpp
libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.fail.cpp
libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp
libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
libcxx/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp
libcxx/utils/libcxx/test/features.py
Removed:
################################################################################
diff --git a/libcxx/include/__config b/libcxx/include/__config
index a573629994316..0f2a23163414c 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -1350,10 +1350,6 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container(
#define _LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS
#endif // _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES
-#if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611
-#define _LIBCPP_HAS_NO_DEDUCTION_GUIDES
-#endif
-
#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L
#define _LIBCPP_HAS_NO_COROUTINES
#endif
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index baa0135876be2..386f8aaf075d7 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -1045,7 +1045,7 @@ class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>
#endif // _LIBCPP_NO_RTTI
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Rp, class ..._Ap>
function(_Rp(*)(_Ap...)) -> function<_Rp(_Ap...)>;
@@ -1090,7 +1090,7 @@ struct __strip_signature<_Rp (_Gp::*) (_Ap...) const volatile & noexcept> { usin
template<class _Fp, class _Stripped = typename __strip_signature<decltype(&_Fp::operator())>::type>
function(_Fp) -> function<_Stripped>;
-#endif // !_LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#endif // _LIBCPP_STD_VER >= 17
template<class _Rp, class ..._ArgTypes>
function<_Rp(_ArgTypes...)>::function(const function& __f) : __f_(__f.__f_) {}
diff --git a/libcxx/include/__functional/reference_wrapper.h b/libcxx/include/__functional/reference_wrapper.h
index 09f4a64945022..20b3eedc96db5 100644
--- a/libcxx/include/__functional/reference_wrapper.h
+++ b/libcxx/include/__functional/reference_wrapper.h
@@ -176,7 +176,7 @@ class _LIBCPP_TEMPLATE_VIS reference_wrapper
#endif // _LIBCPP_CXX03_LANG
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template <class _Tp>
reference_wrapper(_Tp&) -> reference_wrapper<_Tp>;
#endif
diff --git a/libcxx/include/__iterator/iterator_traits.h b/libcxx/include/__iterator/iterator_traits.h
index 5275705c117c5..a0454d2e495cc 100644
--- a/libcxx/include/__iterator/iterator_traits.h
+++ b/libcxx/include/__iterator/iterator_traits.h
@@ -477,7 +477,7 @@ struct __is_exactly_cpp17_input_iterator
__has_iterator_category_convertible_to<_Tp, input_iterator_tag>::value &&
!__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value> {};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator>
using __iter_value_type = typename iterator_traits<_InputIterator>::value_type;
@@ -491,7 +491,7 @@ template<class _InputIterator>
using __iter_to_alloc_type = pair<
add_const_t<typename iterator_traits<_InputIterator>::value_type::first_type>,
typename iterator_traits<_InputIterator>::value_type::second_type>;
-#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#endif // _LIBCPP_STD_VER >= 17
_LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h
index 04161c4b73ed3..9ac7ba8e3ecda 100644
--- a/libcxx/include/__memory/shared_ptr.h
+++ b/libcxx/include/__memory/shared_ptr.h
@@ -686,7 +686,7 @@ class _LIBCPP_SHARED_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS shared_ptr
template <class _Up> friend class _LIBCPP_TEMPLATE_VIS weak_ptr;
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Tp>
shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>;
template<class _Tp, class _Dp>
@@ -1406,7 +1406,7 @@ class _LIBCPP_SHARED_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS weak_ptr
template <class _Up> friend class _LIBCPP_TEMPLATE_VIS shared_ptr;
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Tp>
weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>;
#endif
diff --git a/libcxx/include/__utility/pair.h b/libcxx/include/__utility/pair.h
index e0216f3402b82..06d68d5a94887 100644
--- a/libcxx/include/__utility/pair.h
+++ b/libcxx/include/__utility/pair.h
@@ -310,10 +310,10 @@ struct _LIBCPP_TEMPLATE_VIS pair
#endif
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _T1, class _T2>
pair(_T1, _T2) -> pair<_T1, _T2>;
-#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#endif
template <class _T1, class _T2>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
diff --git a/libcxx/include/array b/libcxx/include/array
index 022172b86ec9c..b76b9fa9a2f09 100644
--- a/libcxx/include/array
+++ b/libcxx/include/array
@@ -356,7 +356,7 @@ struct _LIBCPP_TEMPLATE_VIS array<_Tp, 0>
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Tp, class... _Args,
class = _EnableIf<__all<_IsSame<_Tp, _Args>::value...>::value>
>
diff --git a/libcxx/include/deque b/libcxx/include/deque
index aff93deb10107..37ba58684ac0d 100644
--- a/libcxx/include/deque
+++ b/libcxx/include/deque
@@ -1588,7 +1588,7 @@ public:
void __move_assign(deque& __c, false_type);
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Alloc = allocator<__iter_value_type<_InputIterator>>,
class = _EnableIf<__is_allocator<_Alloc>::value>
diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list
index 0ae8f19ec20c9..66aa75765b8fd 100644
--- a/libcxx/include/forward_list
+++ b/libcxx/include/forward_list
@@ -870,7 +870,7 @@ private:
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Alloc = allocator<__iter_value_type<_InputIterator>>,
class = _EnableIf<__is_allocator<_Alloc>::value>
diff --git a/libcxx/include/list b/libcxx/include/list
index 23da5fcfc92d6..2ae6d588dd849 100644
--- a/libcxx/include/list
+++ b/libcxx/include/list
@@ -1141,7 +1141,7 @@ private:
void __move_assign(list& __c, false_type);
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Alloc = allocator<__iter_value_type<_InputIterator>>,
class = _EnableIf<__is_allocator<_Alloc>::value>
diff --git a/libcxx/include/map b/libcxx/include/map
index 513a04dd79230..3c2b6ff5eb8d2 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -1502,7 +1502,7 @@ private:
#endif
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>,
class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
class = _EnableIf<!__is_allocator<_Compare>::value, void>,
@@ -2175,7 +2175,7 @@ private:
typedef unique_ptr<__node, _Dp> __node_holder;
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator, class _Compare = less<__iter_key_type<_InputIterator>>,
class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>,
class = _EnableIf<!__is_allocator<_Compare>::value, void>,
diff --git a/libcxx/include/optional b/libcxx/include/optional
index 5aec96927acf1..4469360667fdf 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -1000,7 +1000,7 @@ public:
using __base::reset;
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class T>
optional(T) -> optional<T>;
#endif
diff --git a/libcxx/include/queue b/libcxx/include/queue
index 276fff9a56601..2a09bac7611d0 100644
--- a/libcxx/include/queue
+++ b/libcxx/include/queue
@@ -358,7 +358,7 @@ public:
operator< (const queue<_T1, _C1>& __x,const queue<_T1, _C1>& __y);
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Container,
class = _EnableIf<!__is_allocator<_Container>::value>
>
@@ -584,7 +584,7 @@ public:
__is_nothrow_swappable<value_compare>::value);
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template <class _Compare,
class _Container,
class = _EnableIf<!__is_allocator<_Compare>::value>,
diff --git a/libcxx/include/regex b/libcxx/include/regex
index e47cf9fca5d27..a0bf3e2f732b8 100644
--- a/libcxx/include/regex
+++ b/libcxx/include/regex
@@ -3014,7 +3014,7 @@ private:
template <class, class> friend class __lookahead;
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template <class _ForwardIterator,
class = typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value, nullptr_t>::type
>
diff --git a/libcxx/include/set b/libcxx/include/set
index 21ec8435dd840..04f8fc2521d9f 100644
--- a/libcxx/include/set
+++ b/libcxx/include/set
@@ -868,7 +868,7 @@ public:
#endif
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Compare = less<__iter_value_type<_InputIterator>>,
class _Allocator = allocator<__iter_value_type<_InputIterator>>,
@@ -1399,7 +1399,7 @@ public:
#endif
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Compare = less<__iter_value_type<_InputIterator>>,
class _Allocator = allocator<__iter_value_type<_InputIterator>>,
diff --git a/libcxx/include/stack b/libcxx/include/stack
index aefef31ac97b4..5ee4d5176ec4e 100644
--- a/libcxx/include/stack
+++ b/libcxx/include/stack
@@ -231,7 +231,7 @@ public:
operator< (const stack<T1, _C1>& __x, const stack<T1, _C1>& __y);
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _Container,
class = _EnableIf<!__is_allocator<_Container>::value>
>
diff --git a/libcxx/include/string b/libcxx/include/string
index 4940021b0c68a..01b79d8e91dbe 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -1732,7 +1732,7 @@ _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST(_LIBCPP_EXTERN_TEMPLATE, wchar_t)
#endif
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _CharT = __iter_value_type<_InputIterator>,
class _Allocator = allocator<_CharT>,
diff --git a/libcxx/include/tuple b/libcxx/include/tuple
index e1019ef999d5b..2e339f807aa8a 100644
--- a/libcxx/include/tuple
+++ b/libcxx/include/tuple
@@ -1097,7 +1097,7 @@ public:
void swap(tuple&) _NOEXCEPT {}
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template <class ..._Tp>
tuple(_Tp...) -> tuple<_Tp...>;
template <class _Tp1, class _Tp2>
diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map
index ea0382de7d401..a0c1c55e4c715 100644
--- a/libcxx/include/unordered_map
+++ b/libcxx/include/unordered_map
@@ -1464,7 +1464,7 @@ private:
#endif
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Hash = hash<__iter_key_type<_InputIterator>>,
class _Pred = equal_to<__iter_key_type<_InputIterator>>,
@@ -2263,7 +2263,7 @@ public:
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Hash = hash<__iter_key_type<_InputIterator>>,
class _Pred = equal_to<__iter_key_type<_InputIterator>>,
diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set
index a775a9250268d..de87dcd2b74ed 100644
--- a/libcxx/include/unordered_set
+++ b/libcxx/include/unordered_set
@@ -799,7 +799,7 @@ public:
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Hash = hash<__iter_value_type<_InputIterator>>,
class _Pred = equal_to<__iter_value_type<_InputIterator>>,
@@ -1465,7 +1465,7 @@ public:
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Hash = hash<__iter_value_type<_InputIterator>>,
class _Pred = equal_to<__iter_value_type<_InputIterator>>,
diff --git a/libcxx/include/vector b/libcxx/include/vector
index 9189ed44a80c7..3afaddcab53f5 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -931,7 +931,7 @@ private:
}
};
-#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES
+#if _LIBCPP_STD_VER >= 17
template<class _InputIterator,
class _Alloc = allocator<__iter_value_type<_InputIterator>>,
class = _EnableIf<__is_allocator<_Alloc>::value>
diff --git a/libcxx/test/std/containers/associative/map/map.cons/deduct.fail.cpp b/libcxx/test/std/containers/associative/map/map.cons/deduct.fail.cpp
index 13722e9c3501e..a71efafa7115d 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// clang-6 gives
diff erent error messages.
diff --git a/libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp
index 139714bc47c33..4444782291ecb 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Compare = less<iter-value-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/associative/map/map.cons/deduct_const.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/deduct_const.pass.cpp
index d584ffd32b211..3da55fa69759a 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/deduct_const.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/deduct_const.pass.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Compare = less<iter-value-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.fail.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.fail.cpp
index fc8a40717719a..541989a7fcf37 100644
--- a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// clang-6 gives
diff erent error messages.
diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp
index e5b42ebb19cce..b1faba622346c 100644
--- a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Compare = less<iter-value-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp
index 127ee6e084583..716c5221dfb92 100644
--- a/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp
+++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp
@@ -8,7 +8,6 @@
// <map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Compare = less<iter-value-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.fail.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.fail.cpp
index 59f90d291d015..79a73f8c728b7 100644
--- a/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// clang-6 gives
diff erent error messages.
diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp
index 9e0a7fefe0046..180fa067f1de3 100644
--- a/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// UNSUPPORTED: apple-clang-9.1
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/associative/set/set.cons/deduct.fail.cpp b/libcxx/test/std/containers/associative/set/set.cons/deduct.fail.cpp
index 2f068912a0367..5d2a02f8b75ab 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// clang-6 gives
diff erent error messages.
diff --git a/libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp
index a4175ae806e12..0a38ef3e3d546 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// UNSUPPORTED: apple-clang-9.1
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.fail.cpp b/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.fail.cpp
index 88433cf0ea501..7dd0e256d7e7a 100644
--- a/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <queue>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
#include <queue>
#include <deque>
diff --git a/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp b/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp
index 89ff2e71fc0b7..6804c4df667dd 100644
--- a/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <queue>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class Compare, class Container>
// priority_queue(Compare, Container)
diff --git a/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.fail.cpp b/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.fail.cpp
index 4a7bfc8878735..301acca8c67c6 100644
--- a/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <queue>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
#include <queue>
#include <list>
diff --git a/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.pass.cpp b/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.pass.cpp
index 4404cc19ba02d..716e409a6e82b 100644
--- a/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/container.adaptors/queue/queue.cons/deduct.pass.cpp
@@ -9,7 +9,6 @@
// <queue>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: clang-5, apple-clang-9
-// UNSUPPORTED: libcpp-no-deduction-guides
// Clang 5 will generate bad implicit deduction guides
// Specifically, for the copy constructor.
diff --git a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.fail.cpp b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.fail.cpp
index a38848b4a0d4e..55296f4122335 100644
--- a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.fail.cpp
@@ -8,8 +8,6 @@
// <stack>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// vector(InputIterator, InputIterator, Allocator = Allocator())
diff --git a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.pass.cpp b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.pass.cpp
index 5e279fcedbdd6..41187e75813bb 100644
--- a/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/container.adaptors/stack/stack.cons/deduct.pass.cpp
@@ -9,11 +9,9 @@
// <stack>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: clang-5, apple-clang-9
-// UNSUPPORTED: libcpp-no-deduction-guides
// Clang 5 will generate bad implicit deduction guides
// Specifically, for the copy constructor.
-
// template<class Container>
// stack(Container) -> stack<typename Container::value_type, Container>;
//
diff --git a/libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp b/libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp
index ede849f3964c0..37b4cc0231a58 100644
--- a/libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp
@@ -8,8 +8,6 @@
// <array>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class T, class... U>
// array(T, U...) -> array<T, 1 + sizeof...(U)>;
diff --git a/libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp
index 292fe8aca6959..44d8dcb852673 100644
--- a/libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp
@@ -9,17 +9,14 @@
// <array>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: clang-5, apple-clang-9
-// UNSUPPORTED: libcpp-no-deduction-guides
// Clang 5 will generate bad implicit deduction guides
// Specifically, for the copy constructor.
-
// template <class T, class... U>
// array(T, U...) -> array<T, 1 + sizeof...(U)>;
//
// Requires: (is_same_v<T, U> && ...) is true. Otherwise the program is ill-formed.
-
#include <array>
#include <cassert>
#include <cstddef>
diff --git a/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.fail.cpp b/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.fail.cpp
index f40577d43bd9b..044669aaec822 100644
--- a/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.fail.cpp
@@ -8,15 +8,12 @@
// <array>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// deque(InputIterator, InputIterator, Allocator = Allocator())
// -> deque<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <deque>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.pass.cpp
index 3f0e16f4d1674..fb5f69cd042e2 100644
--- a/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/sequences/deque/deque.cons/deduct.pass.cpp
@@ -8,15 +8,12 @@
// <deque>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// deque(InputIterator, InputIterator, Allocator = Allocator())
// -> deque<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <deque>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.fail.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.fail.cpp
index dcfb89f146fd4..47c1cdcea0e40 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.fail.cpp
@@ -8,15 +8,12 @@
// <forward_list>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// forward_list(InputIterator, InputIterator, Allocator = Allocator())
// -> forward_list<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <forward_list>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp
index 6c134d840a238..9af93f9a316a4 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp
@@ -8,15 +8,12 @@
// <forward_list>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// forward_list(InputIterator, InputIterator, Allocator = Allocator())
// -> forward_list<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <forward_list>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/list/list.cons/deduct.fail.cpp b/libcxx/test/std/containers/sequences/list/list.cons/deduct.fail.cpp
index b06674f78f159..96d14514456c5 100644
--- a/libcxx/test/std/containers/sequences/list/list.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/sequences/list/list.cons/deduct.fail.cpp
@@ -8,15 +8,12 @@
// <list>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// list(InputIterator, InputIterator, Allocator = Allocator())
// -> list<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <list>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp
index 9196317e81053..afebdf8d817da 100644
--- a/libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/sequences/list/list.cons/deduct.pass.cpp
@@ -8,15 +8,12 @@
// <list>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// list(InputIterator, InputIterator, Allocator = Allocator())
// -> list<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <list>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.fail.cpp b/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.fail.cpp
index 387328ff6f7ce..7ce00d70f8442 100644
--- a/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.fail.cpp
+++ b/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.fail.cpp
@@ -8,15 +8,12 @@
// <vector>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// vector(InputIterator, InputIterator, Allocator = Allocator())
// -> vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <deque>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.pass.cpp
index f343ba84fcaf4..6cdc19a2c89d3 100644
--- a/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.pass.cpp
+++ b/libcxx/test/std/containers/sequences/vector/vector.cons/deduct.pass.cpp
@@ -8,15 +8,12 @@
// <vector>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// vector(InputIterator, InputIterator, Allocator = Allocator())
// -> vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <vector>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.fail.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.fail.cpp
index a84a1c0ef0084..2fc7fbe5e292d 100644
--- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.fail.cpp
+++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp
index 195495b5e06b4..791830b2af1f2 100644
--- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Hash = hash<iter-key-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp
index 277639f57224d..506a2b7edd3e2 100644
--- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Hash = hash<iter-key-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.fail.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.fail.cpp
index ab60b3c42def8..7fc82de9d4d5f 100644
--- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.fail.cpp
+++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp
index a7639ff5b7048..8d23afaeb0c3b 100644
--- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Hash = hash<iter-key-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp
index 9f2bf24d3f6c8..c22f12161c125 100644
--- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_map>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class InputIterator,
// class Hash = hash<iter-key-type<InputIterator>>,
diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.fail.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.fail.cpp
index bf0d97029a636..6e678aaa5b3ca 100644
--- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.fail.cpp
+++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <unordered_set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp
index a4e5f97e950ad..69207c4ca5cfe 100644
--- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// UNSUPPORTED: apple-clang-9.1
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.fail.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.fail.cpp
index b65ac2c226554..a0201ffff3168 100644
--- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.fail.cpp
+++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.fail.cpp
@@ -8,7 +8,6 @@
// <unordered_set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// XFAIL: clang-6, apple-clang-9.0, apple-clang-9.1, apple-clang-10.0.0
// template<class InputIterator,
diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp
index 7af310db77ec5..0dd7ba1748904 100644
--- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/deduct.pass.cpp
@@ -8,7 +8,6 @@
// <unordered_set>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// UNSUPPORTED: apple-clang-9.1
// template<class InputIterator,
diff --git a/libcxx/test/std/re/re.regex/re.regex.construct/deduct.fail.cpp b/libcxx/test/std/re/re.regex/re.regex.construct/deduct.fail.cpp
index b7460aae0f094..adb446a88c173 100644
--- a/libcxx/test/std/re/re.regex/re.regex.construct/deduct.fail.cpp
+++ b/libcxx/test/std/re/re.regex/re.regex.construct/deduct.fail.cpp
@@ -8,15 +8,12 @@
// <regex>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template <class InputIterator, class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
// vector(InputIterator, InputIterator, Allocator = Allocator())
// -> vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
//
-
#include <regex>
#include <string>
#include <iterator>
diff --git a/libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp b/libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
index 1a18dc27bbbc4..feabcfc588f14 100644
--- a/libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
+++ b/libcxx/test/std/re/re.regex/re.regex.construct/deduct.pass.cpp
@@ -8,15 +8,12 @@
// <regex>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
-
// template<class ForwardIterator>
// basic_regex(ForwardIterator, ForwardIterator,
// regex_constants::syntax_option_type = regex_constants::ECMAScript)
// -> basic_regex<typename iterator_traits<ForwardIterator>::value_type>;
-
#include <regex>
#include <string>
#include <iterator>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
index a385032f41267..e7dd236571ada 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// <string>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
index 3292003f14c31..4082005a2001e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp
@@ -8,7 +8,6 @@
// <string>
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: libcpp-no-deduction-guides
// template<class InputIterator>
// basic_string(InputIterator begin, InputIterator end,
@@ -25,7 +24,6 @@
// is a type that does not qualify as an input iterator, or if Allocator is a type
// that does not qualify as an allocator.
-
#include <string>
#include <iterator>
#include <cassert>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
index 1fa2ee0efb1b2..40211cf96ea21 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.fail.cpp
@@ -8,7 +8,6 @@
// <string>
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: libcpp-no-deduction-guides
// template<class InputIterator>
// basic_string(InputIterator begin, InputIterator end,
@@ -24,7 +23,6 @@
// The deduction guide shall not participate in overload resolution if Allocator
// is a type that does not qualify as an allocator.
-
#include <string>
#include <string_view>
#include <iterator>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
index e6dc0a72670c5..46b3b8fe20250 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp
@@ -8,7 +8,6 @@
// <string>
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: libcpp-no-deduction-guides
// template<class InputIterator>
// basic_string(InputIterator begin, InputIterator end,
@@ -24,7 +23,6 @@
// The deduction guide shall not participate in overload resolution if Allocator
// is a type that does not qualify as an allocator.
-
#include <string>
#include <string_view>
#include <iterator>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
index 07c9002b5b7da..7e087fe12094e 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.fail.cpp
@@ -8,7 +8,6 @@
// <string>
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: libcpp-no-deduction-guides
// template<class InputIterator>
// basic_string(InputIterator begin, InputIterator end,
@@ -30,7 +29,6 @@
// The deduction guide shall not participate in overload resolution if Allocator
// is a type that does not qualify as an allocator.
-
#include <string>
#include <string_view>
#include <iterator>
diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
index fae3b475712e9..69e94ada9e38d 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp
@@ -8,7 +8,6 @@
// <string>
// UNSUPPORTED: c++03, c++11, c++14
-// XFAIL: libcpp-no-deduction-guides
// template<class InputIterator>
// basic_string(InputIterator begin, InputIterator end,
@@ -30,7 +29,6 @@
// The deduction guide shall not participate in overload resolution if Allocator
// is a type that does not qualify as an allocator.
-
#include <string>
#include <string_view>
#include <iterator>
diff --git a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
index d17ece6df18cf..8e1ff27840526 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// <string_view>
diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
index 5dcecd344c36c..ddcc0805a8559 100644
--- a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
+++ b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp
@@ -40,7 +40,7 @@ int main(int, char**) {
m.lock();
m.unlock();
-#ifdef __cpp_deduction_guides
+#if TEST_STD_VER >= 17
std::lock_guard lg(m);
static_assert((std::is_same<decltype(lg), std::lock_guard<decltype(m)>>::value), "" );
#endif
diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp
index 41c7aeb06b69f..816eb7c0ea34d 100644
--- a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp
+++ b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/mutex.pass.cpp
@@ -130,7 +130,7 @@ int main(int, char**)
}
#endif
-#ifdef __cpp_deduction_guides
+#if TEST_STD_VER >= 17
{
TestMutex m1, m2, m3;
{
diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
index d09cde085db3d..9eba9cd9057f2 100644
--- a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
+++ b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp
@@ -99,7 +99,7 @@ int main(int, char**)
q.join();
}
-#ifdef __cpp_deduction_guides
+#if TEST_STD_VER >= 17
std::shared_lock sl(m);
static_assert((std::is_same<decltype(sl), std::shared_lock<decltype(m)>>::value), "" );
#endif
diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
index bd25d02cfe10b..0c3e5e55fb269 100644
--- a/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
+++ b/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp
@@ -55,7 +55,7 @@ int main(int, char**)
m.unlock();
t.join();
-#ifdef __cpp_deduction_guides
+#if TEST_STD_VER >= 17
std::unique_lock ul(m);
static_assert((std::is_same<decltype(ul), std::unique_lock<decltype(m)>>::value), "" );
#endif
diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.fail.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.fail.cpp
index 7c806629be5fe..cc20a01d2448f 100644
--- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.fail.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.fail.cpp
@@ -13,7 +13,6 @@
// function(F) -> function<see-below>;
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// The deduction guides for std::function do not handle rvalue-ref qualified
// call operators and C-style variadics. It also doesn't deduce from nullptr_t.
@@ -22,7 +21,6 @@
#include <functional>
#include <type_traits>
-
struct R { };
struct f0 { R operator()() && { return {}; } };
struct f1 { R operator()(int, ...) { return {}; } };
diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.pass.cpp
index 793673de130cc..00d183168d4b0 100644
--- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_F.pass.cpp
@@ -13,7 +13,6 @@
// function(F) -> function<see-below>;
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
#include <functional>
#include <type_traits>
@@ -21,7 +20,6 @@
#include "test_macros.h"
-
struct R { };
struct A1 { };
struct A2 { };
diff --git a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_ptr.pass.cpp b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_ptr.pass.cpp
index edd4322dfc471..cc61a75c84f98 100644
--- a/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_ptr.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/deduct_ptr.pass.cpp
@@ -13,14 +13,12 @@
// function(R(*)(Args...)) -> function<R(Args...)>;
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
#include <functional>
#include <type_traits>
#include "test_macros.h"
-
struct R { };
struct A1 { };
struct A2 { };
diff --git a/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/deduct.pass.cpp b/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/deduct.pass.cpp
index 4e197e8fc3f32..56a226d0096e5 100644
--- a/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/deduct.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/deduct.pass.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// <functional>
diff --git a/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp b/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp
index d8ad18215fb7a..01fe619f41fa6 100644
--- a/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp
+++ b/libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp
@@ -18,6 +18,8 @@
#include <functional>
#include <cassert>
+#include "test_macros.h"
+
struct convertible_to_int_ref {
int val = 0;
operator int&() { return val; }
@@ -68,7 +70,7 @@ int main()
(true) ? purr() : 0;
}
-#ifdef __cpp_deduction_guides
+#if TEST_STD_VER >= 17
{
int i = 0;
std::reference_wrapper ri(i);
diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp
index 03ee2dbbf6ba1..05810e80e914a 100644
--- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp
+++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/deduction.pass.cpp
@@ -8,7 +8,6 @@
// <memory>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class T> class shared_ptr
diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_deduction.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_deduction.pass.cpp
index 3bcdebf156bce..bf4a4322a02c4 100644
--- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_deduction.pass.cpp
+++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_deduction.pass.cpp
@@ -8,7 +8,6 @@
// <memory>
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// template<class T> class weak_ptr
diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.fail.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.fail.cpp
index 3c051eb9686fd..95e7048712d74 100644
--- a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.fail.cpp
+++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.fail.cpp
@@ -9,15 +9,12 @@
// <optional>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: clang-5
-// UNSUPPORTED: libcpp-no-deduction-guides
// Clang 5 will generate bad implicit deduction guides
// Specifically, for the copy constructor.
-
// template<class T>
// optional(T) -> optional<T>;
-
#include <optional>
#include <cassert>
diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp
index b75b155a6973d..72f747f574efc 100644
--- a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp
@@ -9,15 +9,12 @@
// <optional>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: clang-5, apple-clang-9
-// UNSUPPORTED: libcpp-no-deduction-guides
// Clang 5 will generate bad implicit deduction guides
// Specifically, for the copy constructor.
-
// template<class T>
// optional(T) -> optional<T>;
-
#include <optional>
#include <cassert>
diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
index abec3653559d9..623bcb6e46c93 100644
--- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
+++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// UNSUPPORTED: apple-clang-9
// GCC's implementation of class template deduction is still immature and runs
diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp
index cd90fd73eba6a..3c0a7f1a63fa0 100644
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/implicit_deduction_guides.pass.cpp
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14
-// UNSUPPORTED: libcpp-no-deduction-guides
// GCC's implementation of class template deduction is still immature and runs
// into issues with libc++. However GCC accepts this code when compiling
diff --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py
index 09afe2053c1b4..205a4868d5816 100644
--- a/libcxx/utils/libcxx/test/features.py
+++ b/libcxx/utils/libcxx/test/features.py
@@ -37,7 +37,6 @@
Feature(name='fdelayed-template-parsing', when=lambda cfg: hasCompileFlag(cfg, '-fdelayed-template-parsing')),
Feature(name='libcpp-no-if-constexpr', when=lambda cfg: '__cpp_if_constexpr' not in featureTestMacros(cfg)),
Feature(name='libcpp-no-structured-bindings', when=lambda cfg: '__cpp_structured_bindings' not in featureTestMacros(cfg)),
- Feature(name='libcpp-no-deduction-guides', when=lambda cfg: featureTestMacros(cfg).get('__cpp_deduction_guides', 0) < 201611),
Feature(name='libcpp-no-concepts', when=lambda cfg: featureTestMacros(cfg).get('__cpp_concepts', 0) < 201907),
Feature(name='has-fobjc-arc', when=lambda cfg: hasCompileFlag(cfg, '-xobjective-c++ -fobjc-arc') and
sys.platform.lower().strip() == 'darwin'), # TODO: this doesn't handle cross-compiling to Apple platforms.
More information about the libcxx-commits
mailing list