https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89452
--- Comment #5 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.