<html>
<head>
<title>P1076R1: Editorial clause reorganization</title>

<style type="text/css">
  ins { text-decoration:none; font-weight:bold; background-color:#A0FFA0 }
  .new { text-decoration:none; font-weight:bold; background-color:#D0FFD0 }
  del { text-decoration:line-through; background-color:#FFA0A0 }  
  strong { font-weight: inherit; color: #2020ff }
  table, td, th { border: 1px solid black; border-collapse:collapse; padding: 5px }
</style>
</head>

<body>
ISO/IEC JTC1 SC22 WG21 P1076R1<br/>
Jens Maurer &lt;Jens.Maurer@gmx.net><br/>
Target audience: CWG, LWG<br/>
2018-06-23<br/>

<h1>P1076R1: Editorial clause reorganization</h1>

<h2>Introduction</h2>

This paper summarizes the planned editorial rearrangements of the C++
Working Draft that lead to top-level clause renumbering.


<h2>Planned changes</h2>

<h3>[conv] Standard conversions</h3>
<ul>
  <li>Move [conv] as a subclause into [expr], immediately before
    [expr.arith.conv].</li>
</ul>

<h3>[class] Classes</h3>

<ul>
  <li>Move [class.derived] into [class].</li>
  <li><strong>Move [class.local] to before [class.derived].</strong></li>
  <li>Move [class.access] into <strong>[class]</strong>.</li>
  <li><strong>Move [class.member.lookup] before [class.access].</strong></li>
  <li>From [special], move [class.ctor], [class.conv], [class.dtor]
  into [class.mem].</li>
  <li>From [special], move [class.init], [class.cdtor], [class.copy],
  [class.compare], [class.free] into [class].</li>
  <li>From [special], move [class.temporary] to the end of
    [basic.memobj].</li>
  <li>Move front matter of [special] to a new subclause in
    [class.mem].</li>
</ul>

New layout for [class] Classes:

<ul>
  <li>[class.name] Class names</li>
  <li>[class.mem] Class members
    <ul>
      <li>[class.mfct] Member functions</li>
      <li>[class.mfct.non-static] Non-static member functions</li>
      <li>[special] Special member functions</li>
      <li>[class.ctor] Constructors</li>
      <li><strong>[class.copy.ctor] Copy/move constructors</strong></li>
      <li><strong>[class.copy.assign] Copy/move assignment operator</strong></li>
      <li>[class.dtor] Destructors</li>
      <li>[class.conv] Conversions</li>
      <li>[class.static] Static members</li>
      <li>[class.bit] Bit-fields</li>
      <li>[class.nest] Nested class declarations</li>
      <li>[class.nested.type] Nested type names</li>
    </ul>
  </li>
  <li>[class.union] Unions</li>
  <li><strong>[class.local] Local class declarations</strong></li>
  <li>[class.derived] Derived classes</li>
  <li><strong>[class.member.lookup] Member name lookup</strong></li>
  <li><strong>[class.access] Member access control</strong></li>
  <li>[class.init] Initialization
    <ul>
      <li>[class.expl.init]</li>
      <li>[class.base.init]</li>
      <li>[class.inhctor.init]</li>
      <li><strong>[class.cdtor] Construction and destruction</strong></li>
      <li><strong>[class.copy.elision]</strong></li>
    </ul>
  </li>
  <li><strong>[class.copy] Copying and moving class objects: delete class.copy p1, move p2 into [special]</strong></li>
  
  <li>[class.compare] Comparisons</li>
  <li>[class.free] Free store</li>
</ul>

<h3>[dcl.dcl] Declarations and [dcl.decl] Declarators</h3>

<ul>
  <li>Move [namespace.udecl] into [dcl.dcl] (one level up).</li>
  <li>Move [dcl.decl] into [dcl.dcl], immediately after [dcl.spec].</li>
  <li>Move [dcl.init] into [dcl.dcl], immediately after [dcl.decl].</li>
  <li>Move [dcl.fct.def] and [dcl.struct.bind] into [dcl.dcl].</li>
</ul>

New layout for [dcl.dcl] Declarations:

<ul>

  <li>[dcl.spec] Specifiers</li>
  <li>[dcl.decl] Declarators</li>
  <li>[dcl.init] Initializers</li>
  <li>[dcl.struct.bind] Structured bindings</li>
  <li>[dcl.fct.def] Function definitions</li>
  <li>[dcl.enum] Enumeration declarations</li>
  <li>[namespace.udecl] The using declaration</li>
  <li>[dcl.asm] The asm declaration</li>
  <li>[dcl.link] Linkage specifications</li>
  <li>[dcl.attr] Attributes</li>

</ul>

<h3>Standard library</h3>

<ul>
  <li>Promote [time] to a top-level clause.</li>
  <li>Move [localization] <strong>to before</strong> [input.output].</li>
  <li>Move [numeric.ops] into [algorithms], immediately after [alg.sorting].</li></ul>

<h3>Excluded</h3>

The following actions are expressly not proposed:

<ul>
  <li>Move [atomic] into [thread].</li>
  <li><strong>Promote [filesystems] to a top-level clause.</strong></li>
  <li><strong>Move [re] into [strings].</strong></li>
</ul>
</body>
</html>
