diff --git a/llvm-project b/llvm-project index 0b969fa9ccf..85ee4ff4e47 160000 --- a/llvm-project +++ b/llvm-project @@ -1 +1 @@ -Subproject commit 0b969fa9ccf595abc31942e5d14be784707e960c +Subproject commit 85ee4ff4e474788abc7abdc939114281c2a68ec1 diff --git a/stl/inc/type_traits b/stl/inc/type_traits index bf782dbec0b..93d59e1559d 100644 --- a/stl/inc/type_traits +++ b/stl/inc/type_traits @@ -1845,7 +1845,11 @@ template struct _Refwrap_has_ctor_from<_Ty, _Uty, void_t(_STD declval<_Uty>()))>> : true_type {}; template -class reference_wrapper : public _Weak_types<_Ty>::type { // stand-in for an assignable reference +class reference_wrapper +#if !_HAS_CXX20 + : public _Weak_types<_Ty>::type +#endif // !_HAS_CXX20 +{ public: static_assert(is_object_v<_Ty> || is_function_v<_Ty>, "reference_wrapper requires T to be an object type or a function type."); diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 25a63684b06..6c2177f382b 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -130,6 +130,7 @@ // P0318R1 unwrap_reference, unwrap_ref_decay // P0325R4 to_array() // P0356R5 bind_front() +// P0357R3 Supporting Incomplete Types In reference_wrapper // P0439R0 enum class memory_order // P0457R2 starts_with()/ends_with() For basic_string/basic_string_view // P0458R2 contains() For Ordered And Unordered Associative Containers diff --git a/tests/libcxx/magic_comments.txt b/tests/libcxx/magic_comments.txt index eb038b57412..a905db0a4e7 100644 --- a/tests/libcxx/magic_comments.txt +++ b/tests/libcxx/magic_comments.txt @@ -2,4 +2,5 @@ // REQUIRES: c++11 || c++14 // REQUIRES: c++98 || c++03 // REQUIRES: c++98 || c++03 || c++11 || c++14 +// REQUIRES: c++98 || c++03 || c++11 || c++14 || c++17 // UNSUPPORTED: c++14, c++17, c++2a