Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[conv,class] Clause reorganization in core sections #1919

Closed
jensmaurer opened this issue Feb 14, 2018 · 12 comments
Closed

[conv,class] Clause reorganization in core sections #1919

jensmaurer opened this issue Feb 14, 2018 · 12 comments
Assignees
Labels
after-motions Pull request is to be applied after the pending edits from WG21 straw polls have been applied. big An issue causing a large set of changes, scattered across most of the text. cwg Issue must be reviewed by CWG. lwg Issue must be reviewed by LWG.

Comments

@jensmaurer
Copy link
Member

Following up on #1771, here's a specific suggestion at reorganization:

  • Move [conv] as a subclause into [expr], immediately before [expr.arith.conv].
  • Move [class.derived], [class.access], and [special] as subclauses into [class]: [class.access] as a subclause of [class.mem]; the rest immediately nested into [class].
  • After the above, move [class.init] immediately nested into [class]. Same for [class.temporary]. Neither have anything to do with "special member functions" per se.
  • (avoid hanging paragraphs:) Rename [class.name] to "Class declarations" and move [class]p1-3,5,11 there, at the top. Introduce [class.prop] "Class properties" and move [class]p4,6-10 there.
@jensmaurer jensmaurer added the decision-required A decision of the editorial group (or the Project Editor) is required. label Feb 14, 2018
@jensmaurer
Copy link
Member Author

@tkoeppe, @zygoloid: opinions?

@jensmaurer jensmaurer changed the title Clause reorganization in core sections [conv,class] Clause reorganization in core sections Feb 14, 2018
@jensmaurer
Copy link
Member Author

Editorial meeting consensus: First change agreed. Second change: ctors/dtors/conversions etc. talk about members and go to [class.mem]. Initializations, construction/destruction go into [class]. [class.temporary] goes to [basic] (same level as full-expression). Copying/moving and comparisons under [class]. Leave front matter of "special member functions" without subclauses, under [class.mem].
Maybe separate conversion functions (how to declare) from the "conversions" section.
Consider merging declarations and declarators. Move up [namespace.udecl] under "declarations".

@jensmaurer
Copy link
Member Author

[time] should be a top-level clause "Time and date library".

@jensmaurer jensmaurer added the big An issue causing a large set of changes, scattered across most of the text. label Mar 29, 2018
@tkoeppe
Copy link
Contributor

tkoeppe commented Mar 29, 2018

What about filesystem? If [time] qualifies, probably [fs] does too.

@jensmaurer
Copy link
Member Author

jensmaurer commented Mar 29, 2018

@tkoeppe: [filesystems] is 46 pages. That would be a candidate, but it does also fit under [input.output].
Whereas [utilities] became a dump-everything-here location.

I think we should strive to keep the number of (sub)sections reasonable at every level of the hierarchy. The top level is already large, at 33 clauses, but the suggestions above (reducing the core language footprint) will gain us 4 or 5 clauses.
And I would actually consider putting [re] under [strings], both talk about strings (in the sense of character sequences and the operations performed on them).

Napkin math: 1500 pages / 20 top-level clauses = 75 pages per top-level clause.
40 pages is way below that and needs reasoning why it's at the top level.

@jensmaurer
Copy link
Member Author

Additional ideas with some support: Move [re] under [strings], move [localization] under [input.output].

@AlisdairM
Copy link
Contributor

For C++17, there was tentative agreement to move [numeric.ops] under [algorithm], after we had published the final standard (i.e., make the change for C++20). I had been trying to put together a PR for such a change after the post-meeting mailing, but this seems to be the right place to have that conversation too.

@AlisdairM
Copy link
Contributor

Indeed, this was issue #1511

@jensmaurer
Copy link
Member Author

P1076R0 presents the planned sectioning changes and asks for feedback from LWG and CWG.

@jensmaurer jensmaurer added lwg Issue must be reviewed by LWG. cwg Issue must be reviewed by CWG. labels May 25, 2018
@jensmaurer jensmaurer self-assigned this May 28, 2018
@jensmaurer jensmaurer added after-motions Pull request is to be applied after the pending edits from WG21 straw polls have been applied. and removed decision-required A decision of the editorial group (or the Project Editor) is required. labels Jun 7, 2018
@jensmaurer
Copy link
Member Author

Most recent update of P1076 is at D1076R1.

@CaseyCarter
Copy link
Contributor

I don't know if you want to deal with this as part of the grand reorganization, but I've just noticed a discrepancy in the ordering of the algorithms. In the synopsis, the declarations of the "partitions" (is_partitioned, partition, stable_partition, partition_copy, and partition_point) precede the declarations of the other "Sorting and related operations" (sort, nth_element, etc.) whereas the specifications of the "partitions" are located in [alg.partitions], smack in the middle of [alg.sorting], between [alg.binary.search] and [alg.merge].

Let me know if this doesn't rise to the level of the Grand Reorg, and I'll submit a separate PR to fix it.

@jensmaurer
Copy link
Member Author

@CaseyCarter, please submit a separate issue so that we can discuss this separately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
after-motions Pull request is to be applied after the pending edits from WG21 straw polls have been applied. big An issue causing a large set of changes, scattered across most of the text. cwg Issue must be reviewed by CWG. lwg Issue must be reviewed by LWG.
Projects
None yet
Development

No branches or pull requests

4 participants