This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2024-09-25


2891. Normative status of implementation limits

Section: Clause Annex B  [implimits]     Status: DR     Submitter: ISO/CS     Date: 2024-05-17

[Accepted as a DR at the June, 2024 meeting.]

It is unclear whether Clause Annex B [implimits] is normative, and what its normative content is. The Annex was editorially switched from "informative" to "normative" in September 2020 with this change description:

[intro.compliance.general, implimits] Cite Annex B normatively.

This change also promotes Annex B [implimits] to a "normative" annex. The existing wording in the annex is already normative in character.

On the other hand, this sentence in Clause Annex B [implimits] paragraph 2 seems to say otherwise:

... However, these quantities are only guidelines and do not determine compliance.

If it is indeed intentional that the actual quantitative limits are just guidelines, then the normative (conformance-related) content is limited to Clause Annex B [implimits] paragraph 1, which establishes documentation requirements only:

Because computers are finite, C++ implementations are inevitably limited in the size of the programs they can successfully process. Every implementation shall document those limitations where known. This documentation may cite fixed limits where they exist, say how to compute variable limits as a function of available resources, or say that fixed limits do not exist or are unknown.

However, those general documentation requirements are best expressed in 4.1.1 [intro.compliance.general], leaving Clause Annex B [implimits] with just an informative list of minimum suggested quantities.

Possible resolution [SUPERSEDED]:

  1. Change in 4.1.1 [intro.compliance.general] bullet 2.1 as follows:

    If a program contains no violations of the rules in Clause 5 through Clause 33 and Annex D, a conforming implementation shall, within its resource limits as described in Annex B (see below), accept and correctly execute that program.
  2. Insert a new paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:

    An implementation shall document its limitations in the size of the programs it can successfully process, where known. This documentation may cite fixed limits where they exist, say how to compute variable limits as a function of available resources, or say that fixed limits do not exist or are unknown. Clause Annex B [implimits] lists some quantities that can be subject to limitations, and recommends a minimum value for each quantity.

    A conforming implementation may have extensions (including additional library functions), ...

  3. Change in Clause Annex B [implimits] paragraph 1 and paragraph 2 as follows:

    Annex B
    (normativeinformative)

    Because computers are finite, C++ implementations are inevitably limited in the size of the programs they can successfully process. Every implementation shall document those limitations where known. This documentation may cite fixed limits where they exist, say how to compute variable limits as a function of available resources, or say that fixed limits do not exist or are unknown.

    The limits may constrain quantities that include those described below or others. Implementations can exhibit limitations, among others for the quantities in the following list. The bracketed number following each quantity is recommended as the minimum value for that quantity. However, these quantities are only guidelines and do not determine compliance.

CWG 2024-05-17

CWG was divided whether to relax the documentation requirement or not. As a next step, the wording for a relaxation should be reviewed.

Proposed resolution (approved by CWG 2024-06-26):

  1. Change in 4.1.1 [intro.compliance.general] bullet 2.1 as follows:

    If a program contains no violations of the rules in Clause 5 through Clause 33 and Annex D, a conforming implementation shall, within its resource limits as described in Annex B, accept and correctly execute that program, except when the implementation's limitations (see below) are exceeded.
  2. Insert a new paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:

    An implementation is encouraged to document its limitations in the size or complexity of the programs it can successfully process, if possible and where known. Clause Annex B [implimits] lists some quantities that can be subject to limitations and a potential minimum supported value for each quantity.

    A conforming implementation may have extensions (including additional library functions), ...

  3. Change in Clause Annex B [implimits] paragraph 1 and paragraph 2 as follows:

    Annex B
    (normativeinformative)

    Because computers are finite, C++ implementations are inevitably limited in the size of the programs they can successfully process. Every implementation shall document those limitations where known. This documentation may cite fixed limits where they exist, say how to compute variable limits as a function of available resources, or say that fixed limits do not exist or are unknown.

    The limits may constrain quantities that include those described below or others. Implementations can exhibit limitations for various quantities; some possibilities are presented in the following list. The bracketed number following each quantity is recommended as the a potential minimum value for that quantity. However, these quantities are only guidelines and do not determine compliance.