Title
Exposition-only concepts are not described in library intro
Status
c++23
Section
[conventions]
Submitter
Tim Song

Created on 2022-11-08.00:00:00 last changed 5 months ago

Messages

Date: 2022-11-17.00:42:33

Proposed resolution:

This wording is relative to N4917.

  1. Modify [expos.only.func] as indicated, changing the stable name:

    16.3.3.2 Exposition-only functionsentities, etc. [expos.only.funcentity]

    -1- Several function templatesentities and typedef-names defined in [support] through [thread] and [depr] are only defined for the purpose of exposition. The declaration of such a functionan entity or typedef-name is followed by a comment ending in exposition only.

  2. Strike [expos.only.types] as redundant:

    16.3.3.3.2 Exposition-only types [expos.only.types]

    -1- Several types defined in [support] through [thread] and [depr] are defined for the purpose of exposition. The declaration of such a type is followed by a comment ending in exposition only.

    [Example 1:

    namespace std {
      extern "C" using some-handler = int(int, void*, double);  // exposition only
    }
    

    The type placeholder some-handler can now be used to specify a function that takes a callback parameter with C language linkage. — end example]

Date: 2022-11-12.00:00:00

[ 2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Immediate → WP. ]

Date: 2022-11-12.00:59:59

[ Kona 2022-11-11; Move to Immediate ]

Date: 2022-11-09.00:00:00

[ 2022-11-09 Tim reopens ]

During LWG review of 3753, it was pointed out that typedef-names are not necessarily entities.

Date: 2022-11-10.03:18:56

[ Kona 2022-11-08; Move to Immediate status ]

Previous resolution [SUPERSEDED]:

  1. Modify [expos.only.func] as indicated, changing the stable name:

    16.3.3.2 Exposition-only functionsentities [expos.only.funcentity]

    -1- Several function templatesentities defined in [support] through [thread] and [depr] are only defined for the purpose of exposition. The declaration of such a functionan entity is followed by a comment ending in exposition only.

  2. Strike [expos.only.types] as redundant:

    16.3.3.3.2 Exposition-only types [expos.only.types]

    -1- Several types defined in [support] through [thread] and [depr] are defined for the purpose of exposition. The declaration of such a type is followed by a comment ending in exposition only.

    [Example 1:

    namespace std {
      extern "C" using some-handler = int(int, void*, double);  // exposition only
    }
    

    The type placeholder some-handler can now be used to specify a function that takes a callback parameter with C language linkage. — end example]

Date: 2022-11-08.00:00:00

This is the resolution for GB-074.

The comment is:

[expos.only.func] introduces exposition-only function templates. [expos.only.types] introduces exposition-only types. [objects.within.classes] introduces exposition-only private members.

There is nothing about exposition-only concepts, despite them being used extensively in the library clauses.

The same problem exists for exposition-only variable templates.

History
Date User Action Args
2023-11-22 15:47:43adminsetstatus: wp -> c++23
2022-11-17 00:42:33adminsetmessages: + msg13096
2022-11-17 00:42:33adminsetstatus: immediate -> wp
2022-11-12 00:59:59adminsetmessages: + msg13029
2022-11-12 00:59:59adminsetstatus: open -> immediate
2022-11-10 03:18:56adminsetmessages: + msg12989
2022-11-10 03:18:56adminsetstatus: immediate -> open
2022-11-08 23:01:49adminsetmessages: + msg12968
2022-11-08 23:01:49adminsetstatus: new -> immediate
2022-11-08 15:29:35adminsetmessages: + msg12954
2022-11-08 00:00:00admincreate