On Mon, 08 Sep 2025 at 11:29 +0200, Tomasz Kamiński wrote:
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. OK for trunk, should I backport it to 13/14/15 like previous changes?
OK for trunk with some typos fixed (see below), no need to backport it though.
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml index 0e3e4c3de7f..c41096103bc 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml @@ -1453,4 +1453,56 @@ 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
No need for a comma after "members"
+ 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 + maximum of <code>alignof(T)</code> and <code>sizeof(T)</code>.
"the maximum of"
+ 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 maximum
"the maximum of"
+ 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>
