I'm adding this caveat to the gcc-10 release notes, as well as to the libstdc++ manual.
Pushed to wwwdocs.
commit 6ffde10eba0811d1223eaba7e2a8daefe26276aa Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Nov 4 12:58:19 2020 +0000 Document std::istreambuf_iterator change in GCC 10 [PR 92285] diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html index 759e4fd7..d40a633c 100644 --- a/htdocs/gcc-10/changes.html +++ b/htdocs/gcc-10/changes.html @@ -65,6 +65,12 @@ You may also want to check out our Language (HSAIL) has been deprecated and will likely be removed in a future release. </li> + <li> + The type of the <code>std::iterator</code> base class of + <code>std::istreambuf_iterator</code> was changed in C++98 mode + to be consistent with C++11 and later standards. + See the <a href="#iterator_base">libstdc++ notes below</a> for more details. + </li> </ul> @@ -504,6 +510,18 @@ int get_naïve_pi() { <li> Reduced header dependencies, leading to faster compilation for some code. </li> + <li> + <a id="iterator_base">The <code>std::iterator</code></a> base class of + <code>std::istreambuf_iterator</code> was changed in C++98 mode + to be consistent with C++11 and later standards. + This is expected to have no noticeable effect except in the unlikely case + of a class which has potentially overlapping subobjects of type + <code>std::istreambuf_iterator<C></code> and another iterator type + with a <code>std::iterator<input_iterator_tag, C, ...></code> + base class. The layout of such a type might change when compiled as C++98. + <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92285">Bug 92285</a> + has more details and concrete examples. + </li> </ul> <h3 id="d">D</h3>