3510. Customization point objects should be invocable as non-const too

Section: 16.3.3.3.5 [customization.point.object] Status: Resolved Submitter: Tim Song Opened: 2020-12-15 Last modified: 2021-06-14

Priority: 3

View all other issues in [customization.point.object].

View all issues with Resolved status.

Discussion:

16.3.3.3.5 [customization.point.object] promises that customization point objects are semiregular and that all copies are equal, which permits copies to be freely made. In C++, making copies tends to drop cv-qualification, but there does not appear to be anything that guarantees that you can invoke these objects as non-const (or as rvalues, for that matter).

It is possible that the use of invocable<const F&, Args...> here was meant to bring in implicit expression variations, but P2102R0 has since clarified that this formulation doesn't do that.

[2021-01-15; Telecon prioritization]

Set priority to 3 following reflector and telecon discussions.

[2021-06-13 Resolved by the adoption of P2281R1 at the June 2021 plenary. Status changed: New → Resolved.]

Proposed resolution: