https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89452

--- Comment #4 from Baykov Nikita <nknikita at niisi dot ras.ru> ---
I apologize for my careless mistake.

I have some other questions that I would like to clarify. Hope it will be right
to do it here.

1. You mentioned that pptr() was no longer required to be null pointer in this
case. I have checked https://cplusplus.github.io/LWG/issue2995. The issue has
WP status, but what is not clear to me whether the change affects only C++20
and further versions of the standard, or all of the versions, including C++17,
C++14, C++11, etc. The explanation in
https://cplusplus.github.io/LWG/lwg-active.html#IssueStatus looks ambigous to
me and I do not really understand the difference between DR, WP and C++1x
statuses.

2. Table 112 in N4800 describes how the positioning depends on function
arguments 'which' and 'way'. I am not sure if conditions in the first two rows
of the table are specified correctly. Maybe, they should be replaced with
'(which & (ios_base::in|ios_base::out)) == ios_base::in' and '(which &
(ios_base::in|ios_base::out)) == ios_base::out'? For now, the result doesn't
seem to depend on 'way'. If 'which == ios_base::in|ios_base::out && way ==
ios_base::cur', the conditions of the third row are not satisfied. However, the
conditions of the first two rows are satisfied, thus both input and output
sequences should be positioned, despite the fact that 'way == ios_base::cur'.

3. Your previous replies don't explain why the opening mode of the buffer
should be checked in addition to requirements of the standard.

Reply via email to