Pushed to trunk. The first two changes will be backported too. -- >8 --
Traditionally libstdc++ allowed containers and strings to be instantiated with allocator's that have the wrong value type, implicitly rebinding the allocator to the container's value type. Since C++20 that has been explicitly ill-formed, so the extension is no longer supported in strict modes (e.g. -std=c++17) and in C++20 and later. libstdc++-v3/ChangeLog: * doc/xml/manual/evolution.xml: Document removal of implicit allocator rebinding extensions in strict mode and for C++20. * doc/html/*: Regenerate. --- libstdc++-v3/doc/html/manual/api.html | 13 +++++++++++++ libstdc++-v3/doc/xml/manual/evolution.xml | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index 4037a18d2df..db70f24f2f9 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -915,6 +915,13 @@ Calling a <code>std::bind</code> result as volatile was deprecated for C++17. <filename>libstdc++.so.8</filename>. </para> +<para> + The extension allowing containers to be instantiated with an allocator + that doesn't match the container's value type is no longer allowed in + strict (<option>-std=c++NN</option>) modes, only in + <option>-std=gnu++NN</option> modes. +</para> + </section> <section xml:id="api.rel_91"><info><title><constant>9</constant></title></info> @@ -998,6 +1005,12 @@ Calling a <code>std::bind</code> result as volatile was deprecated for C++17. added. </para> +<para> + The extension allowing containers to be instantiated with an allocator + that doesn't match the container's value type is no longer allowed in + C++20 mode, even in non-strict <option>-std=gnu++20</option> mode. +</para> + </section> <section xml:id="api.rel_111"><info><title><constant>11</constant></title></info> @@ -1096,6 +1109,12 @@ Deprecate the non-standard overload that allows <code>std::setfill</code> to be used with <code>std::basic_istream</code>. </para> +<para> + The extension allowing <code>std::basic_string</code> to be instantiated + with an allocator that doesn't match the string's character type is no + longer allowed in C++20 mode. +</para> + </section> </section> -- 2.40.1