libstdc++: Implement LWG 3546 changes to common_iterator

libstdc++-v3/ChangeLog:

	* include/bits/stl_iterator.h
	(__detail::__common_iter_use_postfix_proxy): Add
	move_constructible constraint as per LWG 3546.
	(common_iterator::__postfix_proxy): Adjust initializer of
	_M_keep as per LWG 3546.
This commit is contained in:
Patrick Palka 2021-06-18 20:50:13 -04:00
parent c5581d4842
commit 4123650bd0

View File

@ -1672,7 +1672,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _It>
concept __common_iter_use_postfix_proxy
= (!requires (_It& __i) { { *__i++ } -> __can_reference; })
&& constructible_from<iter_value_t<_It>, iter_reference_t<_It>>;
&& constructible_from<iter_value_t<_It>, iter_reference_t<_It>>
&& move_constructible<iter_value_t<_It>>;
} // namespace __detail
/// An iterator/sentinel adaptor for representing a non-common range.
@ -1715,7 +1716,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
iter_value_t<_It> _M_keep;
__postfix_proxy(iter_reference_t<_It>&& __x)
: _M_keep(std::move(__x)) { }
: _M_keep(std::forward<iter_reference_t<_It>>(__x)) { }
friend class common_iterator;