mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
libstdc++: Document C++20 atomic_ref implementation-defined behavior.
Also introduce Implementation Specific Behavior section for C++20. libstdc++-v3/ChangeLog: * doc/html/index.html: Regenerated. * doc/html/manual/index.html: Regenerated. * doc/html/manual/intro.html: Regenerated. * doc/html/manual/status.html: Regenatered. * doc/xml/manual/status_cxx2020.xml: Add iso.2020.specific section with atomic_ref documentation. Reviewed-by: Jonathan Wakely <jwakely@redhat.com> Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I.
|
||||
Introduction
|
||||
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
|
||||
This status table is based on the table of contents of ISO/IEC 14882:2003.
|
||||
</p><p>
|
||||
This section describes the C++ support in
|
||||
@@ -1759,7 +1759,44 @@ Note 1: This feature is supported in older releases but the
|
||||
Note 2: The C++20 calendar types are supported since 11.1,
|
||||
time zones and UTC are supported since 13.1,
|
||||
and <code class="function">chrono::parse</code> is supported since 14.1.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
|
||||
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2020.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is also specified by previous standards,
|
||||
see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
|
||||
Specific Behavior</a>, <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
|
||||
2011 Implementation Specific Behavior</a>, and
|
||||
<a class="link" href="status.html#iso.2017.specific" title="Implementation Specific Behavior">C++ 2017 Implementation Specific
|
||||
Behavior</a>. This section only documents behaviour which is new in
|
||||
the 2020 standard.
|
||||
</p><p>
|
||||
<span class="emphasis"><em>16.4.2.4 [compliance]</em></span>
|
||||
The support for always lock-free integral atomic types and presence of
|
||||
<code class="code">atomic_signed_lock_free</code> and
|
||||
<code class="code">atomic_unsigned_lock_free</code> type aliases depends on the
|
||||
target.
|
||||
</p><p>
|
||||
<span class="emphasis"><em>31.7.1 [atomics.ref.generic.general]</em></span>,
|
||||
<span class="emphasis"><em>31.7.3 [atomics.ref.int]</em></span>,
|
||||
<span class="emphasis"><em>31.7.4 [atomics.ref.float]</em></span>,
|
||||
<span class="emphasis"><em>31.7.5 [atomics.ref.pointer]</em></span>
|
||||
The values of <code class="code">is_always_lock_free</code> members depend on the
|
||||
target and cannot be listed here.
|
||||
</p><p>
|
||||
<span class="emphasis"><em>31.7.1 [atomics.ref.generic.general]</em></span>
|
||||
If <code class="code">sizeof(T)</code> is equal to either <code class="code">1</code>,
|
||||
<code class="code">2</code>, <code class="code">4</code>, <code class="code">8</code>, or <code class="code">16</code>,
|
||||
then the value of <code class="code">required_alignment</code> member is equal to
|
||||
the maximum of <code class="code">alignof(T)</code> and <code class="code">sizeof(T)</code>.
|
||||
Otherwise <code class="code">required_alignment</code> value is <code class="code">alignof(T)</code>.
|
||||
</p><p>
|
||||
<span class="emphasis"><em>31.7.3 [atomics.ref.int]</em></span>
|
||||
The value of <code class="code">required_alignment</code> member is equal to the
|
||||
maximum of <code class="code">alignof(value_type)</code> and
|
||||
<code class="code">sizeof(value_type)</code>.
|
||||
</p><p>
|
||||
<span class="emphasis"><em>31.7.4 [atomics.ref.float]</em></span>,
|
||||
<span class="emphasis"><em>31.7.5 [atomics.ref.pointer]</em></span>
|
||||
The value of <code class="code">required_alignment</code> member is equal to
|
||||
<code class="code">alignof(value_type)</code>.
|
||||
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
|
||||
In this implementation the <code class="literal">-std=gnu++23</code> or
|
||||
<code class="literal">-std=c++23</code> flag must be used to enable language
|
||||
and library
|
||||
|
||||
@@ -1453,4 +1453,57 @@ time zones and UTC are supported since 13.1,
|
||||
and <function>chrono::parse</function> is supported since 14.1.
|
||||
</para>
|
||||
|
||||
<section xml:id="iso.2020.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
|
||||
|
||||
<para>For behaviour which is also specified by previous standards,
|
||||
see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
|
||||
Specific Behavior</link>, <link linkend="iso.2011.specific">C++
|
||||
2011 Implementation Specific Behavior</link>, and
|
||||
<link linkend="iso.2017.specific">C++ 2017 Implementation Specific
|
||||
Behavior</link>. This section only documents behaviour which is new in
|
||||
the 2020 standard.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>16.4.2.4 [compliance]</emphasis>
|
||||
The support for always lock-free integral atomic types and presence of
|
||||
<code>atomic_signed_lock_free</code> and
|
||||
<code>atomic_unsigned_lock_free</code> type aliases depends on the
|
||||
target.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>31.7.1 [atomics.ref.generic.general]</emphasis>,
|
||||
<emphasis>31.7.3 [atomics.ref.int]</emphasis>,
|
||||
<emphasis>31.7.4 [atomics.ref.float]</emphasis>,
|
||||
<emphasis>31.7.5 [atomics.ref.pointer]</emphasis>
|
||||
The values of <code>is_always_lock_free</code> members depend on the
|
||||
target and cannot be listed here.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>31.7.1 [atomics.ref.generic.general]</emphasis>
|
||||
If <code>sizeof(T)</code> is equal to either <code>1</code>,
|
||||
<code>2</code>, <code>4</code>, <code>8</code>, or <code>16</code>,
|
||||
then the value of <code>required_alignment</code> member is equal to
|
||||
the maximum of <code>alignof(T)</code> and <code>sizeof(T)</code>.
|
||||
Otherwise <code>required_alignment</code> value is <code>alignof(T)</code>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>31.7.3 [atomics.ref.int]</emphasis>
|
||||
The value of <code>required_alignment</code> member is equal to the
|
||||
maximum of <code>alignof(value_type)</code> and
|
||||
<code>sizeof(value_type)</code>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>31.7.4 [atomics.ref.float]</emphasis>,
|
||||
<emphasis>31.7.5 [atomics.ref.pointer]</emphasis>
|
||||
The value of <code>required_alignment</code> member is equal to
|
||||
<code>alignof(value_type)</code>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user