This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

4252. Are exposition-only classes considered specified for the purpose of final?

Section: 16.4.6.13 [derivation] Status: New Submitter: Jiang An Opened: 2025-04-28 Last modified: 2025-05-04

Priority: Not Prioritized

View all other issues in [derivation].

View all issues with New status.

Discussion:

Currently, iterator and sentinel types of several views are exposition-only in the standard wording, and none of them is specified to be final. These types are arguably required to be non-final due to 16.4.6.13 [derivation] p4 because it's possible to say they are specified except for names.

However, libc++ marks join_view's iterator final for some reasons (https://reviews.llvm.org/D142811#inline-1383022). Perhaps we should clarify that the final-ity of exposition-only class is unspecified.

Proposed resolution:

This wording is relative to N5008.

  1. Modify 16.4.6.13 [derivation] as indicated:

    -4- All types specified in the C++ standard library shall be non-final types unless otherwise specified. Exposition-only classes (16.3.3.2 [expos.only.entity]) are not considered specified for the purpose of final.