diff --git a/llvm-project b/llvm-project index 45f630d729e..5b14abf0c1d 160000 --- a/llvm-project +++ b/llvm-project @@ -1 +1 @@ -Subproject commit 45f630d729e2cce044ed48e6eaf4b8e61e06fede +Subproject commit 5b14abf0c1d0b64cbdba0c42957d55956374e5b8 diff --git a/stl/inc/bitset b/stl/inc/bitset index 0a612bd4ee1..d7868783fbc 100644 --- a/stl/inc/bitset +++ b/stl/inc/bitset @@ -549,8 +549,8 @@ basic_istream<_Elem, _Tr>& operator>>(basic_istream<_Elem, _Tr>& _Istr, bitset<_ // STRUCT TEMPLATE SPECIALIZATION hash template struct hash> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bitset<_Bits> argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bitset<_Bits> _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const bitset<_Bits>& _Keyval) const noexcept { return _Hash_representation(_Keyval._Array); diff --git a/stl/inc/exception b/stl/inc/exception index c2702e4eacf..95a16c6e8da 100644 --- a/stl/inc/exception +++ b/stl/inc/exception @@ -20,7 +20,9 @@ _STL_DISABLE_CLANG_WARNINGS _STD_BEGIN +#if _HAS_DEPRECATED_UNCAUGHT_EXCEPTION _CXX17_DEPRECATE_UNCAUGHT_EXCEPTION _CRTIMP2_PURE bool __CLRCALL_PURE_OR_CDECL uncaught_exception() noexcept; +#endif // _HAS_DEPRECATED_UNCAUGHT_EXCEPTION _CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL uncaught_exceptions() noexcept; _STD_END diff --git a/stl/inc/functional b/stl/inc/functional index 7d957c222db..14152accf31 100644 --- a/stl/inc/functional +++ b/stl/inc/functional @@ -38,9 +38,9 @@ _STD_BEGIN // STRUCT TEMPLATE divides template struct divides { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left / _Right; @@ -50,9 +50,9 @@ struct divides { // STRUCT TEMPLATE modulus template struct modulus { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left % _Right; @@ -62,8 +62,8 @@ struct modulus { // STRUCT TEMPLATE negate template struct negate { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left) const { return -_Left; @@ -91,9 +91,9 @@ struct negate { // STRUCT TEMPLATE logical_and template struct logical_and { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left && _Right; @@ -103,9 +103,9 @@ struct logical_and { // STRUCT TEMPLATE logical_or template struct logical_or { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left || _Right; @@ -115,8 +115,8 @@ struct logical_or { // STRUCT TEMPLATE logical_not template struct logical_not { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left) const { return !_Left; @@ -126,9 +126,9 @@ struct logical_not { // STRUCT TEMPLATE bit_and template struct bit_and { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left & _Right; @@ -138,9 +138,9 @@ struct bit_and { // STRUCT TEMPLATE bit_or template struct bit_or { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left | _Right; @@ -150,9 +150,9 @@ struct bit_or { // STRUCT TEMPLATE bit_xor template struct bit_xor { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left ^ _Right; @@ -162,8 +162,8 @@ struct bit_xor { // STRUCT TEMPLATE bit_not template struct bit_not { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left) const { return ~_Left; @@ -314,6 +314,7 @@ struct bit_not { } }; +#if _HAS_DEPRECATED_NEGATORS _STL_DISABLE_DEPRECATED_WARNING // CLASS TEMPLATE unary_negate template @@ -362,6 +363,7 @@ _CXX17_DEPRECATE_NEGATORS _NODISCARD constexpr binary_negate<_Fn> not2(const _Fn return binary_negate<_Fn>(_Func); } _STL_RESTORE_DEPRECATED_WARNING +#endif // _HAS_DEPRECATED_NEGATORS #if _HAS_AUTO_PTR_ETC _STL_DISABLE_DEPRECATED_WARNING @@ -1428,7 +1430,7 @@ auto _Call_binder(_Invoker_ret<_Ret>, index_sequence<_Ix...>, _Cv_FD& _Obj, _Cv_ // CLASS TEMPLATE _Binder template struct _Forced_result_type { // used by bind() - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret _RESULT_TYPE_NAME; }; template diff --git a/stl/inc/map b/stl/inc/map index 26a664d65ff..94b421a0f4f 100644 --- a/stl/inc/map +++ b/stl/inc/map @@ -47,9 +47,9 @@ public: class value_compare { public: - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef value_type first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef value_type second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef value_type _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef value_type _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; _NODISCARD bool operator()(const value_type& _Left, const value_type& _Right) const { // test if _Left precedes _Right by comparing just keys diff --git a/stl/inc/memory b/stl/inc/memory index 74160579e41..a605d2ae01f 100644 --- a/stl/inc/memory +++ b/stl/inc/memory @@ -418,6 +418,7 @@ _NoThrowFwdIt uninitialized_value_construct_n(_NoThrowFwdIt _First, const _Diff #endif // _HAS_CXX17 +#if _HAS_DEPRECATED_RAW_STORAGE_ITERATOR // CLASS TEMPLATE raw_storage_iterator template class _CXX17_DEPRECATE_RAW_STORAGE_ITERATOR raw_storage_iterator { // wrap stores to raw buffer as output iterator @@ -462,6 +463,7 @@ public: private: _OutIt _Next; }; +#endif // _HAS_DEPRECATED_RAW_STORAGE_ITERATOR #if _HAS_AUTO_PTR_ETC @@ -1205,10 +1207,12 @@ public: return get()[_Idx]; } +#if _HAS_DEPRECATED_SHARED_PTR_UNIQUE _CXX17_DEPRECATE_SHARED_PTR_UNIQUE _NODISCARD bool unique() const noexcept { // return true if no other shared_ptr object owns this resource return this->use_count() == 1; } +#endif // _HAS_DEPRECATED_SHARED_PTR_UNIQUE explicit operator bool() const noexcept { return get() != nullptr; @@ -2211,9 +2215,9 @@ struct owner_less; // not defined template struct owner_less> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; _NODISCARD bool operator()(const shared_ptr<_Ty>& _Left, const shared_ptr<_Ty>& _Right) const noexcept { return _Left.owner_before(_Right); @@ -2230,9 +2234,9 @@ struct owner_less> { template struct owner_less> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef weak_ptr<_Ty> first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef weak_ptr<_Ty> second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef weak_ptr<_Ty> _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef weak_ptr<_Ty> _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; _NODISCARD bool operator()(const weak_ptr<_Ty>& _Left, const weak_ptr<_Ty>& _Right) const noexcept { return _Left.owner_before(_Right); @@ -2284,8 +2288,8 @@ struct hash> : _Conditionally_enabled_hash struct hash> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef shared_ptr<_Ty> _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const shared_ptr<_Ty>& _Keyval) const noexcept { return hash::element_type*>()(_Keyval.get()); diff --git a/stl/inc/ostream b/stl/inc/ostream index c064fff6766..1dc66acef12 100644 --- a/stl/inc/ostream +++ b/stl/inc/ostream @@ -108,13 +108,17 @@ public: _STL_DISABLE_DEPRECATED_WARNING __CLR_OR_THIS_CALL ~sentry() noexcept { -#if _HAS_EXCEPTIONS - if (!_STD uncaught_exception()) { // TRANSITION, ArchivedOS-12000909 +#if !_HAS_EXCEPTIONS + const bool _Zero_uncaught_exceptions = true; +#elif _HAS_DEPRECATED_UNCAUGHT_EXCEPTION + const bool _Zero_uncaught_exceptions = !_STD uncaught_exception(); // TRANSITION, ArchivedOS-12000909 +#else // ^^^ _HAS_DEPRECATED_UNCAUGHT_EXCEPTION / !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION vvv + const bool _Zero_uncaught_exceptions = _STD uncaught_exceptions() == 0; +#endif // !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION + + if (_Zero_uncaught_exceptions) { this->_Myostr._Osfx(); } -#else // _HAS_EXCEPTIONS - this->_Myostr._Osfx(); -#endif // _HAS_EXCEPTIONS } _STL_RESTORE_DEPRECATED_WARNING diff --git a/stl/inc/system_error b/stl/inc/system_error index 39194383a1c..6b4e54f89b7 100644 --- a/stl/inc/system_error +++ b/stl/inc/system_error @@ -356,8 +356,8 @@ _NODISCARD inline error_condition make_error_condition(io_errc _Errno) noexcept // STRUCT TEMPLATE SPECIALIZATION hash template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef error_code argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef error_code _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const error_code& _Keyval) const noexcept { return hash{}(_Keyval.value()); @@ -366,8 +366,8 @@ struct hash { template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef error_condition argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef error_condition _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const error_condition& _Keyval) const noexcept { return hash{}(_Keyval.value()); diff --git a/stl/inc/thread b/stl/inc/thread index f34e6617911..f580a9e6c50 100644 --- a/stl/inc/thread +++ b/stl/inc/thread @@ -234,8 +234,8 @@ basic_ostream<_Ch, _Tr>& operator<<(basic_ostream<_Ch, _Tr>& _Str, thread::id _I // STRUCT TEMPLATE SPECIALIZATION hash template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef thread::id argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef thread::id _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const thread::id _Keyval) const noexcept { return _Hash_representation(_Keyval._Id); diff --git a/stl/inc/type_traits b/stl/inc/type_traits index 04a7e1f8478..010e44a38d5 100644 --- a/stl/inc/type_traits +++ b/stl/inc/type_traits @@ -78,13 +78,13 @@ struct _Arg_types {}; // provide argument_type, etc. (sometimes) template struct _Arg_types<_Ty1> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty1 argument_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty1 _ARGUMENT_TYPE_NAME; }; template struct _Arg_types<_Ty1, _Ty2> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty1 first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty2 second_argument_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty1 _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty2 _SECOND_ARGUMENT_TYPE_NAME; }; // STRUCT TEMPLATE is_function @@ -97,7 +97,7 @@ struct _Is_function { // determine whether _Ty is a function template \ struct _Is_function<_Ret CALL_OPT(_Types...) CV_OPT REF_OPT NOEXCEPT_OPT> : _Arg_types<_Types...> { \ using _Bool_type = true_type; \ - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret result_type; \ + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret _RESULT_TYPE_NAME; \ }; _NON_MEMBER_CALL_CV_REF_NOEXCEPT(_IS_FUNCTION) @@ -107,7 +107,7 @@ _NON_MEMBER_CALL_CV_REF_NOEXCEPT(_IS_FUNCTION) template \ struct _Is_function<_Ret(_Types..., ...) CV_REF_NOEXCEPT_OPT> { /* no calling conventions for ellipsis */ \ using _Bool_type = true_type; \ - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret result_type; \ + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret _RESULT_TYPE_NAME; \ }; _CLASS_DEFINE_CV_REF_NOEXCEPT(_IS_FUNCTION_ELLIPSIS) @@ -130,7 +130,7 @@ struct _Is_memfunptr { // base class for member function pointer predicates struct _Is_memfunptr<_Ret (CALL_OPT _Arg0::*)(_Types...) CV_OPT REF_OPT NOEXCEPT_OPT> \ : _Arg_types { \ using _Bool_type = true_type; \ - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret result_type; \ + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret _RESULT_TYPE_NAME; \ using _Class_type = _Arg0; \ using _Guide_type = enable_if, _Ret(_Types...)>; \ }; @@ -143,7 +143,7 @@ _MEMBER_CALL_CV_REF_NOEXCEPT(_IS_MEMFUNPTR) struct _Is_memfunptr<_Ret (_Arg0::*)(_Types..., ...) \ CV_REF_NOEXCEPT_OPT> { /* no calling conventions for ellipsis */ \ using _Bool_type = true_type; \ - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret result_type; \ + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ret _RESULT_TYPE_NAME; \ using _Class_type = _Arg0; \ using _Guide_type = enable_if; \ }; @@ -563,6 +563,7 @@ struct is_standard_layout : bool_constant<__is_standard_layout(_Ty)> {}; // dete template _INLINE_VAR constexpr bool is_standard_layout_v = __is_standard_layout(_Ty); +#if _HAS_DEPRECATED_IS_LITERAL_TYPE // STRUCT TEMPLATE is_literal_type template struct _CXX17_DEPRECATE_IS_LITERAL_TYPE is_literal_type : bool_constant<__is_literal_type(_Ty)> { @@ -571,6 +572,7 @@ struct _CXX17_DEPRECATE_IS_LITERAL_TYPE is_literal_type : bool_constant<__is_lit template _CXX17_DEPRECATE_IS_LITERAL_TYPE _INLINE_VAR constexpr bool is_literal_type_v = __is_literal_type(_Ty); +#endif // _HAS_DEPRECATED_IS_LITERAL_TYPE // STRUCT TEMPLATE is_trivial #if 1 // TRANSITION, VSO-119526 and LLVM-41915 @@ -1700,6 +1702,7 @@ struct _Invoke_traits()...))>, conjunction_v<_Is_nothrow_invocable, disjunction, _Is_nothrow_convertible>>>; }; +#if _HAS_DEPRECATED_RESULT_OF // STRUCT TEMPLATE result_of template struct _CXX17_DEPRECATE_RESULT_OF result_of { // explain usage @@ -1720,6 +1723,7 @@ _STL_DISABLE_DEPRECATED_WARNING template using result_of_t _CXX17_DEPRECATE_RESULT_OF = typename result_of<_Ty>::type; _STL_RESTORE_DEPRECATED_WARNING +#endif // _HAS_DEPRECATED_RESULT_OF template using _Invoke_result_t = typename _Invoke_traits::type; @@ -1794,7 +1798,7 @@ struct _Weak_result_type {}; // default definition _STL_DISABLE_DEPRECATED_WARNING template struct _Weak_result_type<_Ty, void_t> { // defined if _Ty::result_type exists - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::result_type result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::result_type _RESULT_TYPE_NAME; }; _STL_RESTORE_DEPRECATED_WARNING @@ -1805,7 +1809,7 @@ _STL_DISABLE_DEPRECATED_WARNING template struct _Weak_argument_type<_Ty, void_t> : _Weak_result_type<_Ty> { // defined if _Ty::argument_type exists - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::argument_type argument_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::argument_type _ARGUMENT_TYPE_NAME; }; _STL_RESTORE_DEPRECATED_WARNING @@ -1817,8 +1821,8 @@ template struct _Weak_binary_args<_Ty, void_t> : _Weak_argument_type<_Ty> { // defined if both types exist - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::first_argument_type first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::second_argument_type second_argument_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::first_argument_type _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef typename _Ty::second_argument_type _SECOND_ARGUMENT_TYPE_NAME; }; _STL_RESTORE_DEPRECATED_WARNING @@ -2157,8 +2161,8 @@ struct hash; template struct _Conditionally_enabled_hash { // conditionally enabled hash base - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Kty argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Kty _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const _Kty& _Keyval) const noexcept(noexcept(hash<_Kty>::_Do_hash(_Keyval))) /* strengthened */ { @@ -2188,8 +2192,8 @@ struct hash template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef float argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef float _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const float _Keyval) const noexcept { return _Hash_representation(_Keyval == 0.0F ? 0.0F : _Keyval); // map -0 to 0 } @@ -2197,8 +2201,8 @@ struct hash { template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef double argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef double _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const double _Keyval) const noexcept { return _Hash_representation(_Keyval == 0.0 ? 0.0 : _Keyval); // map -0 to 0 } @@ -2206,8 +2210,8 @@ struct hash { template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef long double argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef long double _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const long double _Keyval) const noexcept { return _Hash_representation(_Keyval == 0.0L ? 0.0L : _Keyval); // map -0 to 0 } @@ -2215,8 +2219,8 @@ struct hash { template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef nullptr_t argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef nullptr_t _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(nullptr_t) const noexcept { void* _Null{}; return _Hash_representation(_Null); @@ -2290,7 +2294,9 @@ namespace _DEPRECATE_TR1_NAMESPACE tr1 { using _STD cref; using _STD ref; using _STD reference_wrapper; +#if _HAS_DEPRECATED_RESULT_OF using _STD result_of; +#endif // _HAS_DEPRECATED_RESULT_OF using _STD hash; } // namespace tr1 _STL_RESTORE_DEPRECATED_WARNING diff --git a/stl/inc/typeindex b/stl/inc/typeindex index e4a2f7369fd..33d57b0150a 100644 --- a/stl/inc/typeindex +++ b/stl/inc/typeindex @@ -61,8 +61,8 @@ private: // STRUCT TEMPLATE SPECIALIZATION hash template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef type_index argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef type_index _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const type_index& _Keyval) const noexcept { return _Keyval.hash_code(); diff --git a/stl/inc/unordered_map b/stl/inc/unordered_map index ea275cf4815..9c182556362 100644 --- a/stl/inc/unordered_map +++ b/stl/inc/unordered_map @@ -50,24 +50,7 @@ public: explicit _Umap_traits(const _Tr& _Traits) noexcept(is_nothrow_copy_constructible_v<_Tr>) : _Tr(_Traits) {} - class value_compare { - public: - using first_argument_type = value_type; - using second_argument_type = value_type; - using result_type = bool; - - _NODISCARD bool operator()(const value_type& _Left, const value_type& _Right) const - noexcept(noexcept(_Keycompobj(_Left.first, _Right.first))) /* strengthened */ { - // test if _Left precedes _Right by comparing just keys - return _Keycompobj(_Left.first, _Right.first); - } - - value_compare(const key_compare& _Keycomparg) noexcept( - is_nothrow_copy_constructible_v) /* strengthened */ - : _Keycompobj(_Keycomparg) {} - - key_compare _Keycompobj; - }; + using value_compare = void; // TRANSITION, remove when _Standard becomes unconditionally true template static const _Kty& _Kfn(const pair<_Ty1, _Ty2>& _Val) noexcept { // extract key from element value diff --git a/stl/inc/unordered_set b/stl/inc/unordered_set index bfd95f8c1d7..88837069af1 100644 --- a/stl/inc/unordered_set +++ b/stl/inc/unordered_set @@ -49,7 +49,7 @@ public: explicit _Uset_traits(const _Tr& _Traits) noexcept(is_nothrow_copy_constructible_v<_Tr>) : _Tr(_Traits) {} - using value_compare = key_compare; + using value_compare = void; // TRANSITION, remove when _Standard becomes unconditionally true static const _Kty& _Kfn(const value_type& _Val) noexcept { return _Val; diff --git a/stl/inc/variant b/stl/inc/variant index 0f748520899..23801a1c6e5 100644 --- a/stl/inc/variant +++ b/stl/inc/variant @@ -1730,8 +1730,8 @@ struct hash> : _Conditionally_enabled_hash template <> struct hash { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef monostate argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef monostate _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(monostate) const noexcept { return 1729; // Arbitrary value diff --git a/stl/inc/vector b/stl/inc/vector index cfee72f9b99..f6e7de4f588 100644 --- a/stl/inc/vector +++ b/stl/inc/vector @@ -2855,8 +2855,8 @@ _NODISCARD bool operator!=(const vector& _Left, const vector struct hash> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef vector argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef vector _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const vector& _Keyval) const noexcept { return _Hash_array_representation(_Keyval._Myvec.data(), _Keyval._Myvec.size()); diff --git a/stl/inc/xmemory b/stl/inc/xmemory index 54145621830..e4ef91cb23f 100644 --- a/stl/inc/xmemory +++ b/stl/inc/xmemory @@ -1908,6 +1908,7 @@ _NoThrowFwdIt _Uninitialized_value_construct_n_unchecked1(_NoThrowFwdIt _UFirst, } #endif // _HAS_IF_CONSTEXPR +#if _HAS_DEPRECATED_TEMPORARY_BUFFER // FUNCTION TEMPLATE get_temporary_buffer template _CXX17_DEPRECATE_TEMPORARY_BUFFER _NODISCARD pair<_Ty*, ptrdiff_t> get_temporary_buffer(ptrdiff_t _Count) noexcept { @@ -1919,6 +1920,7 @@ template _CXX17_DEPRECATE_TEMPORARY_BUFFER void return_temporary_buffer(_Ty* _Pbuf) { _Return_temporary_buffer(_Pbuf); } +#endif // _HAS_DEPRECATED_TEMPORARY_BUFFER // STRUCT TEMPLATE _In_place_key_extract_set // assumes _Args have already been _Remove_cvref_t'd diff --git a/stl/inc/xstddef b/stl/inc/xstddef index 340a1a3294d..fe5ac6d5ae4 100644 --- a/stl/inc/xstddef +++ b/stl/inc/xstddef @@ -47,9 +47,9 @@ struct binary_function { // base class for binary functions // STRUCT TEMPLATE plus template struct plus { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left + _Right; @@ -59,9 +59,9 @@ struct plus { // STRUCT TEMPLATE minus template struct minus { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left - _Right; @@ -71,9 +71,9 @@ struct minus { // STRUCT TEMPLATE multiplies template struct multiplies { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _RESULT_TYPE_NAME; constexpr _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left * _Right; @@ -83,9 +83,9 @@ struct multiplies { // STRUCT TEMPLATE equal_to template struct equal_to { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left == _Right; @@ -95,9 +95,9 @@ struct equal_to { // STRUCT TEMPLATE not_equal_to template struct not_equal_to { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left != _Right; @@ -107,9 +107,9 @@ struct not_equal_to { // STRUCT TEMPLATE greater template struct greater { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left > _Right; @@ -119,9 +119,9 @@ struct greater { // STRUCT TEMPLATE less template struct less { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left < _Right; @@ -131,9 +131,9 @@ struct less { // STRUCT TEMPLATE greater_equal template struct greater_equal { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left >= _Right; @@ -143,9 +143,9 @@ struct greater_equal { // STRUCT TEMPLATE less_equal template struct less_equal { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _FIRST_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty _SECOND_ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool _RESULT_TYPE_NAME; constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const { return _Left <= _Right; diff --git a/stl/inc/xstring b/stl/inc/xstring index 096dacb45bd..169f0ddbd4a 100644 --- a/stl/inc/xstring +++ b/stl/inc/xstring @@ -1713,8 +1713,8 @@ using wstring_view = basic_string_view; // STRUCT TEMPLATE SPECIALIZATION hash FOR basic_string_view template struct hash> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef basic_string_view<_Elem, _Traits> argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef basic_string_view<_Elem, _Traits> _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const basic_string_view<_Elem, _Traits> _Keyval) const noexcept { return _Hash_array_representation(_Keyval.data(), _Keyval.size()); @@ -4581,8 +4581,8 @@ using u32string = basic_string, allocator struct hash> { - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef basic_string<_Elem, _Traits, _Alloc> argument_type; - _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t result_type; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef basic_string<_Elem, _Traits, _Alloc> _ARGUMENT_TYPE_NAME; + _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef size_t _RESULT_TYPE_NAME; _NODISCARD size_t operator()(const basic_string<_Elem, _Traits, _Alloc>& _Keyval) const noexcept { return _Hash_array_representation(_Keyval.c_str(), _Keyval.size()); diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 31eba49fbf8..30bfce0f010 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -185,6 +185,9 @@ // P1959R0 Removing weak_equality And strong_equality // P????R? directory_entry::clear_cache() +// _HAS_CXX20 indirectly controls: +// P0619R4 Removing C++17-Deprecated Features + // _HAS_CXX20 and _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS control: // P0767R1 Deprecating is_pod // Other C++20 deprecation warnings @@ -587,12 +590,6 @@ #endif // _M_FP_EXCEPT #endif // _STD_VECTORIZE_WITH_FLOAT_CONTROL -// P1423R3 char8_t Backward Compatibility Remediation -// Controls whether we allow the stream insertions this proposal forbids -#ifndef _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 -#define _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 (!_HAS_CXX20) -#endif // _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 - // P0174R2 Deprecating Vestigial Library Parts // P0521R0 Deprecating shared_ptr::unique() // Other C++17 deprecation warnings @@ -910,6 +907,60 @@ // next warning number: STL4029 +// P0619R4 Removing C++17-Deprecated Features +#ifndef _HAS_FEATURES_REMOVED_IN_CXX20 +#define _HAS_FEATURES_REMOVED_IN_CXX20 (!_HAS_CXX20) +#endif // _HAS_FEATURES_REMOVED_IN_CXX20 + +#ifndef _HAS_DEPRECATED_ADAPTOR_TYPEDEFS +#define _HAS_DEPRECATED_ADAPTOR_TYPEDEFS (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_ADAPTOR_TYPEDEFS + +#ifndef _HAS_DEPRECATED_IS_LITERAL_TYPE +#define _HAS_DEPRECATED_IS_LITERAL_TYPE (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_IS_LITERAL_TYPE + +#ifndef _HAS_DEPRECATED_NEGATORS +#define _HAS_DEPRECATED_NEGATORS (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_NEGATORS + +#ifndef _HAS_DEPRECATED_RAW_STORAGE_ITERATOR +#define _HAS_DEPRECATED_RAW_STORAGE_ITERATOR (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_RAW_STORAGE_ITERATOR + +#ifndef _HAS_DEPRECATED_RESULT_OF +#define _HAS_DEPRECATED_RESULT_OF (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_RESULT_OF + +#ifndef _HAS_DEPRECATED_SHARED_PTR_UNIQUE +#define _HAS_DEPRECATED_SHARED_PTR_UNIQUE (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_SHARED_PTR_UNIQUE + +#ifndef _HAS_DEPRECATED_TEMPORARY_BUFFER +#define _HAS_DEPRECATED_TEMPORARY_BUFFER (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_TEMPORARY_BUFFER + +#ifndef _HAS_DEPRECATED_UNCAUGHT_EXCEPTION +#define _HAS_DEPRECATED_UNCAUGHT_EXCEPTION (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_DEPRECATED_UNCAUGHT_EXCEPTION + +#if _HAS_DEPRECATED_ADAPTOR_TYPEDEFS +#define _ARGUMENT_TYPE_NAME argument_type +#define _FIRST_ARGUMENT_TYPE_NAME first_argument_type +#define _SECOND_ARGUMENT_TYPE_NAME second_argument_type +#define _RESULT_TYPE_NAME result_type +#else // ^^^ _HAS_DEPRECATED_ADAPTOR_TYPEDEFS / !_HAS_DEPRECATED_ADAPTOR_TYPEDEFS vvv +#define _ARGUMENT_TYPE_NAME _Unnameable_argument +#define _FIRST_ARGUMENT_TYPE_NAME _Unnameable_first_argument +#define _SECOND_ARGUMENT_TYPE_NAME _Unnameable_second_argument +#define _RESULT_TYPE_NAME _Unnameable_result +#endif // !_HAS_DEPRECATED_ADAPTOR_TYPEDEFS + +// P1423R3 char8_t Backward Compatibility Remediation +// Controls whether we allow the stream insertions this proposal forbids +#ifndef _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 +#define _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 (_HAS_FEATURES_REMOVED_IN_CXX20) +#endif // _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 // LIBRARY FEATURE-TEST MACROS diff --git a/tests/libcxx/skipped_tests.txt b/tests/libcxx/skipped_tests.txt index d22aec74a0d..9f75b43c799 100644 --- a/tests/libcxx/skipped_tests.txt +++ b/tests/libcxx/skipped_tests.txt @@ -752,6 +752,11 @@ language.support\cmp\cmp.strongord\strongord.pass.cpp language.support\cmp\cmp.weakeq\cmp.weakeq.pass.cpp language.support\cmp\cmp.weakord\weakord.pass.cpp +# Comment: "Test C99 compound literal." +# Code: `(int[]){3, 4}` +# error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax +containers\sequences\array\array.creation\to_array.pass.cpp + # *** LIKELY STL BUGS *** # Not yet analyzed, likely STL bugs. Assertions and other runtime failures.