<html>
<head>
<title>P1076R0: 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 P1076R0<br/>
Jens Maurer &lt;Jens.Maurer@gmx.net><br/>
Target audience: CWG, LWG<br/>
2018-05-05<br/>

<h1>P1076R0: 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>Move [class.access] into [class.mem].</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>[class.conv] Conversions</li>
      <li>[class.dtor] Destructors</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>
      <li>[class.access] Class member access</li>
    </ul>
  </li>
  <li>[class.derived] Derived classes</li>
  <li>[class.union] Unions</li>
  <li>[class.init] Initialization</li>
  <li>[class.cdtor] Construction and destruction</li>
  <li>[class.copy] Copying and moving class objects</li>
  <li>[class.compare] Comparisons</li>
  <li>[class.free] Free store</li>
  <li>[class.local] Local class declarations</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>Move [re] into [strings]. <em>Some have expressed weak concerns.</em></li>
  <li>Promote [time] to a top-level clause.</li>
  <li>Move [localization] into [input.output], immediately after [syncstream].</li>
  <li>Move [numeric.ops] into [algorithms], immediately after [alg.sorting].</li>
  <li><em>Some suggest to promote [filesystems] to a top-level clause.</em></li>
</ul>

<h3>Excluded</h3>

The following actions are expressly not proposed:

<ul>
  <li>Move [atomic] into [thread].</li>
</ul>
</body>
</html>
