LWG-3595 asks for constexpr members of common_iterator proxies proxy and postfix-proxy.
proxy is returned by operator-> so it is observable, need to implement the change for it.
postfix-proxy is not returned and not observable, in fact the STL does not have it. isadded by #1991 , and constexpr is observable.
Also noexcept for indirection operator is no longer strengthened.
Need to change the _Proxy_base, _Arrow_proxy and _Postfix_proxy classes:
|
struct _Proxy_base {
|
|
iter_value_t<_Iter> _Keep;
|
|
|
|
explicit _Proxy_base(iter_reference_t<_Iter>&& _Right) noexcept(
|
|
is_nothrow_constructible_v<iter_value_t<_Iter>, iter_reference_t<_Iter>>) // strengthened
|
|
: _Keep(_STD forward<iter_reference_t<_Iter>>(_Right)) {}
|
|
};
|
|
class _Arrow_proxy : private _Proxy_base {
|
|
public:
|
|
friend common_iterator;
|
|
|
|
using _Proxy_base::_Proxy_base;
|
|
|
|
_NODISCARD const iter_value_t<_Iter>* operator->() const noexcept /* strengthened */ {
|
|
return _STD addressof(this->_Keep);
|
|
}
|
|
};
|
|
class _Postfix_proxy : private _Proxy_base {
|
|
public:
|
|
friend common_iterator;
|
|
|
|
using _Proxy_base::_Proxy_base;
|
|
|
|
_NODISCARD const iter_value_t<_Iter>& operator*() const noexcept /* strengthened */ {
|
|
return this->_Keep;
|
|
}
|
|
};
|
LWG-3595 asks for
constexprmembers ofcommon_iteratorproxies proxy and postfix-proxy.proxy is returned by operator-> so it is observable, need to implement the change for it.
postfix-proxy is not returned
and not observable, in fact the STL does not have it.isadded by #1991 , andconstexpris observable.Also
noexceptfor indirection operator is no longer strengthened.Need to change the
_Proxy_base,_Arrow_proxyand_Postfix_proxyclasses:STL/stl/inc/iterator
Lines 818 to 824 in 8833270
STL/stl/inc/iterator
Lines 890 to 899 in 8833270
STL/stl/inc/iterator
Lines 924 to 933 in 8833270