diff --git a/stl/inc/optional b/stl/inc/optional index 4a0f521fa20..f0fd6f996c1 100644 --- a/stl/inc/optional +++ b/stl/inc/optional @@ -642,7 +642,7 @@ _NODISCARD constexpr bool operator>=(const _Ty1& _Left, const optional<_Ty2>& _R #ifdef __cpp_lib_concepts // clang-format off template - requires (!_Is_specialization_v<_Ty2, optional>) // LWG-3566 + requires (!_Is_specialization_v<_Ty2, optional>) && three_way_comparable_with<_Ty1, _Ty2> _NODISCARD constexpr compare_three_way_result_t<_Ty1, _Ty2> operator<=>(const optional<_Ty1>& _Left, const _Ty2& _Right) { diff --git a/stl/inc/ranges b/stl/inc/ranges index faafffa45c5..94e841a9314 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -1352,7 +1352,7 @@ namespace ranges { }; basic_istream<_Elem, _Traits>* _Stream; - _Ty _Val = _Ty{}; // Per LWG issue submitted but unnumbered as of 2021-06-15 + _Ty _Val = _Ty{}; public: constexpr explicit basic_istream_view(basic_istream<_Elem, _Traits>& _Stream_) noexcept( @@ -2434,7 +2434,6 @@ namespace ranges { _Count = (_STD min) (_RANGES distance(_Range), _Count); const auto _First = _RANGES begin(_Range); - // The following are all per the proposed resolution of LWG-3407 if constexpr (_Strat == _St::_Reconstruct_span) { return span(_First, _First + _Count); } else if constexpr (_Strat == _St::_Reconstruct_string_view) { @@ -2804,7 +2803,6 @@ namespace ranges { // it's a "reconstructible range"; return the same kind of range with a restricted extent _Count = (_STD min) (_RANGES distance(_Range), _Count); - // The following are all per the proposed resolution of LWG-3407 if constexpr (_Strat == _St::_Reconstruct_span) { return span(_Ubegin(_Range) + _Count, _Uend(_Range)); } else if constexpr (_Strat == _St::_Reconstruct_subrange) { @@ -2964,7 +2962,7 @@ namespace ranges { template struct _Category_base<_Outer, _Inner, true> { using iterator_category = - conditional_t // per LWG-3535 + conditional_t // && derived_from<_Iter_cat_t>, bidirectional_iterator_tag> // && derived_from<_Iter_cat_t>, bidirectional_iterator_tag>, bidirectional_iterator_tag, @@ -2991,7 +2989,7 @@ namespace ranges { static constexpr bool _Deref_is_glvalue = is_reference_v<_InnerRng<_Const>>; /* [[no_unique_address]] */ _OuterIter _Outer{}; - /* [[no_unique_address]] */ _Defaultabox<_InnerIter> _Inner{}; // per LWG issue unfiled as of 2021-06-14 + /* [[no_unique_address]] */ _Defaultabox<_InnerIter> _Inner{}; // per LWG-3569 _Parent_t* _Parent{}; constexpr auto&& _Update_inner() { @@ -3036,7 +3034,6 @@ namespace ranges { public: // clang-format off - // Per LWG issue unnumbered as of 2021-03-16 using iterator_concept = conditional_t<_Deref_is_glvalue && bidirectional_range<_Base> && bidirectional_range<_InnerRng<_Const>> && common_range<_InnerRng<_Const>>, bidirectional_iterator_tag, diff --git a/stl/inc/syncstream b/stl/inc/syncstream index a7a92ead700..83350ca2d95 100644 --- a/stl/inc/syncstream +++ b/stl/inc/syncstream @@ -56,7 +56,7 @@ protected: _Swap(_Right); } - void _Swap(_Basic_syncbuf_impl& _Right) { // see LWG-3498 regarding noexcept + void _Swap(_Basic_syncbuf_impl& _Right) { _Mysb::swap(_Right); _STD swap(_Emit_on_sync, _Right._Emit_on_sync); _STD swap(_Sync_recorded, _Right._Sync_recorded); @@ -106,7 +106,7 @@ public: _Tidy(); } - basic_syncbuf& operator=(basic_syncbuf&& _Right) { // see LWG-3498 regarding noexcept + basic_syncbuf& operator=(basic_syncbuf&& _Right) { emit(); if (this == _STD addressof(_Right)) { @@ -145,7 +145,7 @@ public: return *this; } - void swap(basic_syncbuf& _Right) { // see LWG-3498 regarding noexcept + void swap(basic_syncbuf& _Right) { if (this != _STD addressof(_Right)) { _Pocs(_Getal(), _Right._Getal()); _Swap_except_al(_Right); @@ -252,7 +252,7 @@ private: } } - void _Swap_except_al(basic_syncbuf& _Right) { // see LWG-3498 regarding noexcept + void _Swap_except_al(basic_syncbuf& _Right) { _Mybase::_Swap(_Right); _STD swap(_Wrapped, _Right._Wrapped); _STD swap(_Get_mutex(), _Right._Get_mutex()); @@ -306,8 +306,7 @@ private: }; template -void swap(basic_syncbuf<_Elem, _Traits, _Alloc>& _Left, - basic_syncbuf<_Elem, _Traits, _Alloc>& _Right) { // see LWG-3498 regarding noexcept +void swap(basic_syncbuf<_Elem, _Traits, _Alloc>& _Left, basic_syncbuf<_Elem, _Traits, _Alloc>& _Right) { // LWG-3616 _Left.swap(_Right); } diff --git a/stl/inc/xstring b/stl/inc/xstring index 776320431ef..a36e514143f 100644 --- a/stl/inc/xstring +++ b/stl/inc/xstring @@ -1284,7 +1284,7 @@ public: #if _HAS_CXX23 // clang-format off template - requires (!same_as, basic_string_view> // per LWG-3581 + requires (!same_as, basic_string_view> && _RANGES contiguous_range<_Range> && _RANGES sized_range<_Range> && same_as<_RANGES range_value_t<_Range>, _Elem> @@ -1293,7 +1293,6 @@ public: _Rng.operator _STD basic_string_view<_Elem, _Traits>(); }) && (!requires { - // per editorial or LWG issue not yet filed as of 2021-06-10 typename remove_reference_t<_Range>::traits_type; } || same_as::traits_type, _Traits>)) constexpr basic_string_view(_Range&& _Rng) noexcept( diff --git a/stl/inc/xutility b/stl/inc/xutility index 1d7cf2771ee..d988b4eced2 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -3862,7 +3862,7 @@ _NODISCARD _CONSTEXPR17 move_iterator<_Iter> operator+( #ifdef __cpp_lib_concepts // clang-format off requires requires { - { _Right.base() + _Off } -> same_as<_Iter>; // LWG-3293 + { _Right.base() + _Off } -> same_as<_Iter>; } // clang-format on #endif // __cpp_lib_concepts