3148. <concepts> should be freestanding

Section: 16.4.2.5 [compliance] Status: C++20 Submitter: Casey Carter Opened: 2018-08-09 Last modified: 2021-02-25

Priority: 0

View all other issues in [compliance].

View all issues with C++20 status.

Discussion:

The design intent of the <concepts> header is that it contains only fundamental concept definitions and implementations of customization points that are used by those concept definitions. There should never be components in the header that require operating system support. Consequently, freestanding implementations can and should provide it. It is an oversight on the part of LWG - and in particular the author of P0898R3 "Standard Libary Concepts" - that the <concepts> header is not required to be provided by freestanding implementations.

[2018-08 Batavia Monday issue prioritization]

Priority set to 0, status to 'Tentatively Ready'

[2018-11, Adopted in San Diego]

Proposed resolution:

This wording is relative to N4762.

  1. In 16.4.2.5 [compliance], add a new row to Table 21:

    Table 21 — C++ headers for freestanding implementations
    SubclauseHeader(s)
    […] […] […]
    17.13 [support.runtime] Other runtime support <cstdarg>
    18 [concepts] Concepts library <concepts>
    21 [meta] Type traits <type_traits>
    […] […] […]