[PATCH] libstdc++: Restore allocator constructor for std::packaged_task (P3503R3)
Tomasz Kaminski
tkaminsk@redhat.com
Thu May 21 07:38:49 GMT 2026
On Tue, May 19, 2026 at 4:34 PM Jonathan Wakely <jwakely@redhat.com> wrote:
> WG21 approved P3503R3 (by me and Nicolas Morales) in Sofia, 2025. The
> change is to make std::promise and std::packaged_task be constructible
> with an allocator, but not to support general uses-allocator
> construction. So they do not have specializations of std::uses_allocator
> and do not have an allocator-extended version of every normal
> constructor (i.e., no allocator-extended move constructors and for
> std::packaged_task, no allocator-extended default constructor).
>
> Since the changes were originally proposed as resolutions to LWG 2095
> and LWG 3003, this treats the change as a DR for all standard versions
> from C++11 up. This means the constructor semantics are consistent (and
> sensible) for all standard versions.
>
> Because I pre-emptively implemented the original resolution of LWG 2095
> (in r0-112872-g376d7c51ece6f8), we need to remove the allocator-extended
> constructors of std::promise and std::packaged_task which I added but
> which are not in the working draft after the P3503R3 changes.
>
> To restore the packaged_task(allocator_arg_t, const Alloc&, F&&)
> constructor that was removed by LWG 2921 we just need to remove the #if
> that disabled it for C++17 and later.
>
> Finally, we need to remove the std::uses_allocator partial
> specialization for std::promise (removed by P3503R3) and the one for
> std::packaged_task (already disabled for C++17 and later by LWG 2976).
>
> libstdc++-v3/ChangeLog:
>
> * doc/xml/manual/evolution.xml: Document constructor changes.
> * doc/html/*: Regenerate.
> * include/std/future (uses_allocator): Remove specializations
> for std::promise and std::packaged_task.
> (promise(allocator_arg_t, const Alloc&, promise&&)): Remove
> constructor proposed for LWG 2095 but not in P3503R3.
> (packaged_task(allocator_arg_t, const Alloc&)): Likewise.
> (packaged_task(allocator_arg_t, const Alloc&, packaged_task&&)):
> Likewise.
> (packaged_task(allocator_arg_t, const Alloc&, F&&)): Restore
> constructor for C++20 and later.
> * testsuite/30_threads/packaged_task/uses_allocator.cc: Adjust
> expected result for static_assert.
> * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
> ---
>
> Tested x86_64-linux.
>
LGTM.
>
> Since I want to treat this as a DR for older standards, it might seem
> worth backporting. However, it changes the API of std::promise and
> std::packaged_task, even if it's unlikely anybody is actually using
> these allocator-extended constructors. We should at least see how much
> fallout there is from the change on trunk, then consider backports
> later.
>
Yeah, given that the move constructor hasn't actually used allocators,
the people who used it (for allocator aware semantics) didn't get expected
result. So it may be worth backporting it, but I agree we should wait a bit
on
to see breakage.
>
> libstdc++-v3/doc/html/index.html | 2 +-
> libstdc++-v3/doc/html/manual/api.html | 4 +
> libstdc++-v3/doc/html/manual/appendix.html | 2 +-
> .../doc/html/manual/appendix_porting.html | 2 +-
> libstdc++-v3/doc/html/manual/index.html | 2 +-
> libstdc++-v3/doc/xml/manual/evolution.xml | 8 ++
> libstdc++-v3/include/std/future | 76 ++++---------------
> .../packaged_task/uses_allocator.cc | 6 +-
> .../30_threads/promise/uses_allocator.cc | 4 +-
> 9 files changed, 34 insertions(+), 72 deletions(-)
>
> diff --git a/libstdc++-v3/doc/html/index.html
> b/libstdc++-v3/doc/html/index.html
> index 782f3bbc299c..857de004c951 100644
> --- a/libstdc++-v3/doc/html/index.html
> +++ b/libstdc++-v3/doc/html/index.html
> @@ -142,7 +142,7 @@
> Existing tests
> </a></span></dt><dt><span class="section"><a
> href="manual/test.html#test.exception.safety.containers">
> C++11 Requirements Test Sequence Descriptions
> -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="manual/abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="manual/abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.changes_no">Prohibited
> Changes</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third.headers">Pre-ISO headers
> removed</a></span></dt><dt><span class="section"><a
> href="manual/backwards.html#backwards.third.hash">Extension headers
> hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="manual/abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="manual/abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.changes_no">Prohibited
> Changes</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="manual/abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="manual/api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="manual/api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt><dt><span class="section"><a
> href="manual/api.html#api.rel_17"><code
> class="constant">17</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="manual/backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third.headers">Pre-ISO headers
> removed</a></span></dt><dt><span class="section"><a
> href="manual/backwards.html#backwards.third.hash">Extension headers
> hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> </a></span></dt><dt><span class="section"><a
> href="manual/backwards.html#backwards.third.streamattach">
> No <code class="code">stream::attach(int fd)</code>
> </a></span></dt><dt><span class="section"><a
> href="manual/backwards.html#backwards.third.support_cxx98">
> diff --git a/libstdc++-v3/doc/html/manual/api.html
> b/libstdc++-v3/doc/html/manual/api.html
> index f004ddc166d8..4fce14127ef8 100644
> --- a/libstdc++-v3/doc/html/manual/api.html
> +++ b/libstdc++-v3/doc/html/manual/api.html
> @@ -515,4 +515,8 @@ Deprecated the non-standard overload of <code
> class="code">std::fabs</code> for
> </p><p>
> Made <code class="code">std::is_integral_v<__int128></code> true
> for strict
> <code class="code">-std</code> dialects.
> +</p></div><div class="section"><div class="titlepage"><div><div><h3
> class="title"><a id="api.rel_17"></a><code
> class="constant">17</code></h3></div></div></div><p>
> +Removed allocator-extended constructors and support for uses-allocator
> +construction from <code class="classname">std::promise</code> and
> +<code class="classname">std::packaged_task</code>.
> </p></div></div><div class="navfooter"><hr /><table width="100%"
> summary="Navigation footer"><tr><td width="40%" align="left"><a
> accesskey="p" href="abi.html">Prev</a> </td><td width="20%"
> align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td
> width="40%" align="right"> <a accesskey="n"
> href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left"
> valign="top">ABI Policy and Guidelines </td><td width="20%"
> align="center"><a accesskey="h" href="../index.html">Home</a></td><td
> width="40%" align="right" valign="top"> Backwards
> Compatibility</td></tr></table></div></body></html>
> \ No newline at end of file
> diff --git a/libstdc++-v3/doc/html/manual/appendix.html
> b/libstdc++-v3/doc/html/manual/appendix.html
> index e71ea5423a0a..bb9184bcb217 100644
> --- a/libstdc++-v3/doc/html/manual/appendix.html
> +++ b/libstdc++-v3/doc/html/manual/appendix.html
> @@ -16,7 +16,7 @@
> Existing tests
> </a></span></dt><dt><span class="section"><a
> href="test.html#test.exception.safety.containers">
> C++11 Requirements Test Sequence Descriptions
> -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_17"><code
> class="constant">17</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.streamattach">
> No <code class="code">stream::attach(int fd)</code>
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.support_cxx98">
> diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html
> b/libstdc++-v3/doc/html/manual/appendix_porting.html
> index dc46db3086a6..028c766b5345 100644
> --- a/libstdc++-v3/doc/html/manual/appendix_porting.html
> +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html
> @@ -14,7 +14,7 @@
> Existing tests
> </a></span></dt><dt><span class="section"><a
> href="test.html#test.exception.safety.containers">
> C++11 Requirements Test Sequence Descriptions
> -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_17"><code
> class="constant">17</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.streamattach">
> No <code class="code">stream::attach(int fd)</code>
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.support_cxx98">
> diff --git a/libstdc++-v3/doc/html/manual/index.html
> b/libstdc++-v3/doc/html/manual/index.html
> index fb61205678f2..8a13efcfbc45 100644
> --- a/libstdc++-v3/doc/html/manual/index.html
> +++ b/libstdc++-v3/doc/html/manual/index.html
> @@ -123,7 +123,7 @@
> Existing tests
> </a></span></dt><dt><span class="section"><a
> href="test.html#test.exception.safety.containers">
> C++11 Requirements Test Sequence Descriptions
> -</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> +</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span
> class="section"><a href="abi.html">ABI Policy and
> Guidelines</a></span></dt><dd><dl><dt><span class="section"><a
> href="abi.html#abi.cxx_interface">The C++
> Interface</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span
> class="section"><a
> href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.history">History</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span
> class="section"><a href="abi.html#abi.versioning.active">Checking
> Active</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.changes_allowed">Allowed
> Changes</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.impl">Implementation</a></span></dt><dt><span
> class="section"><a
> href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span
> class="section"><a href="abi.html#abi.testing.single">Single ABI
> Testing</a></span></dt><dt><span class="section"><a
> href="abi.html#abi.testing.multi">Multiple ABI
> Testing</a></span></dt></dl></dd><dt><span class="section"><a
> href="abi.html#abi.issues">Outstanding
> Issues</a></span></dt></dl></dd><dt><span class="section"><a
> href="api.html">API Evolution and Deprecation
> History</a></span></dt><dd><dl><dt><span class="section"><a
> href="api.html#api.rel_300"><code
> class="constant">3.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_310"><code
> class="constant">3.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_320"><code
> class="constant">3.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_330"><code
> class="constant">3.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_340"><code
> class="constant">3.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_400"><code
> class="constant">4.0</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_410"><code
> class="constant">4.1</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_420"><code
> class="constant">4.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_430"><code
> class="constant">4.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_440"><code
> class="constant">4.4</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_450"><code
> class="constant">4.5</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_460"><code
> class="constant">4.6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_470"><code
> class="constant">4.7</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_480"><code
> class="constant">4.8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_490"><code
> class="constant">4.9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_51"><code
> class="constant">5</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_53"><code
> class="constant">5.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_61"><code
> class="constant">6</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_71"><code
> class="constant">7</code></a></span></dt><dd><dl><dt><span
> class="section"><a href="api.html#api.rel_72"><code
> class="constant">7.2</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_73"><code
> class="constant">7.3</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="api.html#api.rel_81"><code
> class="constant">8</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_91"><code
> class="constant">9</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_101"><code
> class="constant">10</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_111"><code
> class="constant">11</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_121"><code
> class="constant">12</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_123"><code
> class="constant">12.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_131"><code
> class="constant">13</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_133"><code
> class="constant">13.3</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_141"><code
> class="constant">14</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_151"><code
> class="constant">15</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_16"><code
> class="constant">16</code></a></span></dt><dt><span class="section"><a
> href="api.html#api.rel_17"><code
> class="constant">17</code></a></span></dt></dl></dd><dt><span
> class="section"><a href="backwards.html">Backwards
> Compatibility</a></span></dt><dd><dl><dt><span class="section"><a
> href="backwards.html#backwards.first">First</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.second">Second</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span
> class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO
> headers removed</a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.hash">Extension headers hash_map,
> hash_set moved to ext or backwards</a></span></dt><dt><span
> class="section"><a
> href="backwards.html#backwards.third.nocreate_noreplace">No <code
> class="code">ios::nocreate/ios::noreplace</code>.
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.streamattach">
> No <code class="code">stream::attach(int fd)</code>
> </a></span></dt><dt><span class="section"><a
> href="backwards.html#backwards.third.support_cxx98">
> diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml
> b/libstdc++-v3/doc/xml/manual/evolution.xml
> index 911db8a7538b..2ebdebc98204 100644
> --- a/libstdc++-v3/doc/xml/manual/evolution.xml
> +++ b/libstdc++-v3/doc/xml/manual/evolution.xml
> @@ -1164,4 +1164,12 @@ Made
> <code>std::is_integral_v<__int128></code> true for strict
> </para>
> </section>
>
> +<section
> xml:id="api.rel_17"><info><title><constant>17</constant></title></info>
> +<para>
> +Removed allocator-extended constructors and support for uses-allocator
> +construction from <classname>std::promise</classname> and
> +<classname>std::packaged_task</classname>.
> +</para>
> +</section>
> +
> </section>
> diff --git a/libstdc++-v3/include/std/future
> b/libstdc++-v3/include/std/future
> index 693c52037b52..96a852e60cdc 100644
> --- a/libstdc++-v3/include/std/future
> +++ b/libstdc++-v3/include/std/future
> @@ -52,7 +52,6 @@
> #include <bits/shared_ptr.h>
> #include <bits/std_function.h>
> #include <bits/std_thread.h>
> -#include <bits/uses_allocator.h>
> #include <ext/aligned_buffer.h>
>
> namespace std _GLIBCXX_VISIBILITY(default)
> @@ -1112,22 +1111,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> _M_storage(new _Res_type())
> { }
>
> - promise(promise&& __rhs) noexcept
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> -
> template<typename _Allocator>
> promise(allocator_arg_t, const _Allocator& __a)
> : _M_future(std::allocate_shared<_State>(__a)),
> _M_storage(__future_base::_S_allocate_result<_Res>(__a))
> { }
>
> - template<typename _Allocator>
> - promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> + promise(promise&& __rhs) noexcept
> + : _M_future(std::move(__rhs._M_future)),
> + _M_storage(std::move(__rhs._M_storage))
> + { }
>
> promise(const promise&) = delete;
>
> @@ -1207,11 +1200,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> swap(promise<_Res>& __x, promise<_Res>& __y) noexcept
> { __x.swap(__y); }
>
> - template<typename _Res, typename _Alloc>
> - struct uses_allocator<promise<_Res>, _Alloc>
> - : public true_type { };
> -
> -
> /// Partial specialization for promise<R&>
> template<typename _Res>
> class promise<_Res&>
> @@ -1231,22 +1219,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> _M_storage(new _Res_type())
> { }
>
> - promise(promise&& __rhs) noexcept
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> -
> template<typename _Allocator>
> promise(allocator_arg_t, const _Allocator& __a)
> : _M_future(std::allocate_shared<_State>(__a)),
> _M_storage(__future_base::_S_allocate_result<_Res&>(__a))
> { }
>
> - template<typename _Allocator>
> - promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> + promise(promise&& __rhs) noexcept
> + : _M_future(std::move(__rhs._M_future)),
> + _M_storage(std::move(__rhs._M_storage))
> + { }
>
> promise(const promise&) = delete;
>
> @@ -1329,24 +1311,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> _M_storage(new _Res_type())
> { }
>
> - promise(promise&& __rhs) noexcept
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> -
> template<typename _Allocator>
> promise(allocator_arg_t, const _Allocator& __a)
> : _M_future(std::allocate_shared<_State>(__a)),
> _M_storage(__future_base::_S_allocate_result<void>(__a))
> { }
>
> - // _GLIBCXX_RESOLVE_LIB_DEFECTS
> - // 2095. missing constructors needed for uses-allocator
> construction
> - template<typename _Allocator>
> - promise(allocator_arg_t, const _Allocator&, promise&& __rhs)
> - : _M_future(std::move(__rhs._M_future)),
> - _M_storage(std::move(__rhs._M_storage))
> - { }
> + promise(promise&& __rhs) noexcept
> + : _M_future(std::move(__rhs._M_future)),
> + _M_storage(std::move(__rhs._M_storage))
> + { }
>
> promise(const promise&) = delete;
>
> @@ -1575,33 +1549,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> : _M_state(_Task_state<_Fn>::_S_create(std::forward<_Fn>(__fn),
> {}))
> { }
>
> -#if __cplusplus < 201703L
> // _GLIBCXX_RESOLVE_LIB_DEFECTS
> // 2097. packaged_task constructors should be constrained
> // 2407. [this constructor should not be] explicit
> // 2921. packaged_task and type-erased allocators
> + // 3003. <future> still has type-erased allocators in promise
> template<typename _Fn, typename _Alloc, typename = __not_same<_Fn>>
> packaged_task(allocator_arg_t, const _Alloc& __a, _Fn&& __fn)
> : _M_state(_Task_state<_Fn,
> _Alloc>::_S_create(std::forward<_Fn>(__fn),
> __a))
> { }
>
> - // _GLIBCXX_RESOLVE_LIB_DEFECTS
> - // 2095. missing constructors needed for uses-allocator
> construction
> - template<typename _Allocator>
> - packaged_task(allocator_arg_t, const _Allocator&) noexcept
> - { }
> -
> - template<typename _Allocator>
> - packaged_task(allocator_arg_t, const _Allocator&,
> - const packaged_task&) = delete;
> -
> - template<typename _Allocator>
> - packaged_task(allocator_arg_t, const _Allocator&,
> - packaged_task&& __other) noexcept
> - { this->swap(__other); }
> -#endif
> -
> ~packaged_task()
> {
> if (static_cast<bool>(_M_state) && !_M_state.unique())
> @@ -1678,14 +1636,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> packaged_task<_Res(_ArgTypes...)>& __y) noexcept
> { __x.swap(__y); }
>
> -#if __cplusplus < 201703L
> - // _GLIBCXX_RESOLVE_LIB_DEFECTS
> - // 2976. Dangling uses_allocator specialization for packaged_task
> - template<typename _Res, typename _Alloc>
> - struct uses_allocator<packaged_task<_Res>, _Alloc>
> - : public true_type { };
> -#endif
> -
> /// @cond undocumented
>
> // Shared state created by std::async().
> diff --git
> a/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
> b/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
> index c9b9f088f2f8..3b458a341bbc 100644
> --- a/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
> +++ b/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
> @@ -1,4 +1,4 @@
> -// { dg-do compile { target { c++11_only || c++14_only } } }
> +// { dg-do compile { target c++11 } }
> // { dg-require-gthreads "" }
>
> // Copyright (C) 2011-2026 Free Software Foundation, Inc.
> @@ -25,5 +25,5 @@
> using std::uses_allocator;
> using std::allocator;
> using std::packaged_task;
> -static_assert( uses_allocator<packaged_task<int()>,
> allocator<int>>::value,
> - "packaged_task supports uses-allocator construction" );
> +static_assert( ! uses_allocator<packaged_task<int()>,
> allocator<int>>::value,
> + "packaged_task does not support uses-allocator
> construction" );
> diff --git a/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
> b/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
> index 398d4f108b60..1233ef47a3ad 100644
> --- a/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
> +++ b/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
> @@ -25,5 +25,5 @@
> using std::uses_allocator;
> using std::allocator;
> using std::promise;
> -static_assert( uses_allocator<promise<int>, allocator<int>>::value,
> - "promise supports uses-allocator construction" );
> +static_assert( ! uses_allocator<promise<int>, allocator<int>>::value,
> + "promise does not support uses-allocator construction" );
> --
> 2.54.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20260521/7f76f209/attachment-0001.htm>
More information about the Libstdc++
mailing list