diff --git a/libcxx/include/__config b/libcxx/include/__config --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -1350,10 +1350,6 @@ #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 --- a/libcxx/include/__functional/function.h +++ b/libcxx/include/__functional/function.h @@ -1045,7 +1045,7 @@ #endif // _LIBCPP_NO_RTTI }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template function(_Rp(*)(_Ap...)) -> function<_Rp(_Ap...)>; @@ -1090,7 +1090,7 @@ template::type> function(_Fp) -> function<_Stripped>; -#endif // !_LIBCPP_HAS_NO_DEDUCTION_GUIDES +#endif // _LIBCPP_STD_VER >= 17 template 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 --- a/libcxx/include/__functional/reference_wrapper.h +++ b/libcxx/include/__functional/reference_wrapper.h @@ -176,7 +176,7 @@ #endif // _LIBCPP_CXX03_LANG }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template reference_wrapper(_Tp&) -> reference_wrapper<_Tp>; #endif diff --git a/libcxx/include/__iterator/iterator_traits.h b/libcxx/include/__iterator/iterator_traits.h --- a/libcxx/include/__iterator/iterator_traits.h +++ b/libcxx/include/__iterator/iterator_traits.h @@ -477,7 +477,7 @@ __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 using __iter_value_type = typename iterator_traits<_InputIterator>::value_type; @@ -491,7 +491,7 @@ using __iter_to_alloc_type = pair< add_const_t::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 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -686,7 +686,7 @@ template friend class _LIBCPP_TEMPLATE_VIS weak_ptr; }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; template @@ -1406,7 +1406,7 @@ template friend class _LIBCPP_TEMPLATE_VIS shared_ptr; }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; #endif diff --git a/libcxx/include/__utility/pair.h b/libcxx/include/__utility/pair.h --- a/libcxx/include/__utility/pair.h +++ b/libcxx/include/__utility/pair.h @@ -310,10 +310,10 @@ #endif }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template pair(_T1, _T2) -> pair<_T1, _T2>; -#endif // _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#endif template inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 diff --git a/libcxx/include/array b/libcxx/include/array --- a/libcxx/include/array +++ b/libcxx/include/array @@ -356,7 +356,7 @@ }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template::value...>::value> > diff --git a/libcxx/include/deque b/libcxx/include/deque --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -1588,7 +1588,7 @@ void __move_assign(deque& __c, false_type); }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class = _EnableIf<__is_allocator<_Alloc>::value> diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -870,7 +870,7 @@ }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class = _EnableIf<__is_allocator<_Alloc>::value> diff --git a/libcxx/include/list b/libcxx/include/list --- a/libcxx/include/list +++ b/libcxx/include/list @@ -1141,7 +1141,7 @@ void __move_assign(list& __c, false_type); }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class = _EnableIf<__is_allocator<_Alloc>::value> diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -1502,7 +1502,7 @@ #endif }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>, class = _EnableIf::value, void>, @@ -2175,7 +2175,7 @@ typedef unique_ptr<__node, _Dp> __node_holder; }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Allocator = allocator<__iter_to_alloc_type<_InputIterator>>, class = _EnableIf::value, void>, diff --git a/libcxx/include/optional b/libcxx/include/optional --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -1000,7 +1000,7 @@ using __base::reset; }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template optional(T) -> optional; #endif diff --git a/libcxx/include/queue b/libcxx/include/queue --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -358,7 +358,7 @@ operator< (const queue<_T1, _C1>& __x,const queue<_T1, _C1>& __y); }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template::value> > @@ -584,7 +584,7 @@ __is_nothrow_swappable::value); }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template ::value>, diff --git a/libcxx/include/regex b/libcxx/include/regex --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -3014,7 +3014,7 @@ template friend class __lookahead; }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template ::value, nullptr_t>::type > diff --git a/libcxx/include/set b/libcxx/include/set --- a/libcxx/include/set +++ b/libcxx/include/set @@ -868,7 +868,7 @@ #endif }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Allocator = allocator<__iter_value_type<_InputIterator>>, @@ -1399,7 +1399,7 @@ #endif }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Allocator = allocator<__iter_value_type<_InputIterator>>, diff --git a/libcxx/include/stack b/libcxx/include/stack --- a/libcxx/include/stack +++ b/libcxx/include/stack @@ -231,7 +231,7 @@ operator< (const stack& __x, const stack& __y); }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template::value> > diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -1732,7 +1732,7 @@ #endif -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template, class _Allocator = allocator<_CharT>, diff --git a/libcxx/include/tuple b/libcxx/include/tuple --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -1097,7 +1097,7 @@ void swap(tuple&) _NOEXCEPT {} }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template tuple(_Tp...) -> tuple<_Tp...>; template diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -1464,7 +1464,7 @@ #endif }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Pred = equal_to<__iter_key_type<_InputIterator>>, @@ -2263,7 +2263,7 @@ }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Pred = equal_to<__iter_key_type<_InputIterator>>, diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -799,7 +799,7 @@ }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Pred = equal_to<__iter_value_type<_InputIterator>>, @@ -1465,7 +1465,7 @@ }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, class _Pred = equal_to<__iter_value_type<_InputIterator>>, diff --git a/libcxx/include/vector b/libcxx/include/vector --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -931,7 +931,7 @@ } }; -#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#if _LIBCPP_STD_VER >= 17 template>, 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 --- 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 @@ // // 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 different 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // 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 different 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // 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 different 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // UNSUPPORTED: apple-clang-9.1 // template // 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 different 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // UNSUPPORTED: apple-clang-9.1 // template // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template // 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides #include #include 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 --- 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 @@ // // 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::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 --- 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 @@ // // 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 // stack(Container) -> stack; // 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template // array(T, U...) -> array; 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 --- 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 @@ // // 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 // array(T, U...) -> array; // // Requires: (is_same_v && ...) is true. Otherwise the program is ill-formed. - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // deque(InputIterator, InputIterator, Allocator = Allocator()) // -> deque::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // deque(InputIterator, InputIterator, Allocator = Allocator()) // -> deque::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // forward_list(InputIterator, InputIterator, Allocator = Allocator()) // -> forward_list::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // forward_list(InputIterator, InputIterator, Allocator = Allocator()) // -> forward_list::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // list(InputIterator, InputIterator, Allocator = Allocator()) // -> list::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // list(InputIterator, InputIterator, Allocator = Allocator()) // -> list::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // vector(InputIterator, InputIterator, Allocator = Allocator()) // -> vector::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // vector(InputIterator, InputIterator, Allocator = Allocator()) // -> vector::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // 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 // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // 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 // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template>, 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 --- 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 @@ // // 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 // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // UNSUPPORTED: apple-clang-9.1 // template // 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 // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // UNSUPPORTED: apple-clang-9.1 // template // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template ::value_type>> // vector(InputIterator, InputIterator, Allocator = Allocator()) // -> vector::value_type, Allocator>; // - #include #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides - // template // basic_regex(ForwardIterator, ForwardIterator, // regex_constants::syntax_option_type = regex_constants::ECMAScript) // -> basic_regex::value_type>; - #include #include #include 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 --- 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 // 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// XFAIL: libcpp-no-deduction-guides // template // 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 #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// XFAIL: libcpp-no-deduction-guides // template // 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 #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// XFAIL: libcpp-no-deduction-guides // template // 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 #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// XFAIL: libcpp-no-deduction-guides // template // 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 #include #include 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// XFAIL: libcpp-no-deduction-guides // template // 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 #include #include 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 --- 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 // 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 --- 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 @@ m.lock(); m.unlock(); -#ifdef __cpp_deduction_guides +#if TEST_STD_VER >= 17 std::lock_guard lg(m); static_assert((std::is_same>::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 --- 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 @@ } #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 --- 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 @@ q.join(); } -#ifdef __cpp_deduction_guides +#if TEST_STD_VER >= 17 std::shared_lock sl(m); static_assert((std::is_same>::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 --- 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 @@ m.unlock(); t.join(); -#ifdef __cpp_deduction_guides +#if TEST_STD_VER >= 17 std::unique_lock ul(m); static_assert((std::is_same>::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 --- 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; // 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 #include - 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 --- 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; // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides #include #include @@ -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 --- 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; // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides #include #include #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 --- 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 // 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 --- 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 @@ -68,7 +68,7 @@ (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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template 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 --- 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 @@ // // UNSUPPORTED: c++03, c++11, c++14 -// UNSUPPORTED: libcpp-no-deduction-guides // template 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 --- 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 @@ // // 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 // optional(T) -> optional; - #include #include 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 --- 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 @@ // // 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 // optional(T) -> optional; - #include #include 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 --- 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 --- 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 --- 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.