<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Evolution status after Kona 2019</title>

	<style>
	p {text-align:justify}
	li {text-align:justify}
	blockquote.note
	{
		background-color:#E0E0E0;
		padding-left: 15px;
		padding-right: 15px;
		padding-top: 1px;
		padding-bottom: 1px;
	}
	ins {color:#00A000}
	del {color:#A00000}
	</style>
</head>
<body>

<address align=right>
Document number: P1018r3
<br/>
Audience: WG21
<br/>
<br/>
<a href="mailto:ville.voutilainen@gmail.com">Ville Voutilainen</a><br/>
2019-03-11<br/>
</address>
<hr/>
<h1 align=center>Evolution status after Kona 2019</h1>

<h2>Abstract</h2>

<p>
  This paper is a collection of items Evolution has worked
  on up to and in the Kona meeting, their status,
  and plans for the future.
</p>

<h2>Concepts</h2>

<p>
  No new activity, EWG is in bug-fix mode for Concepts.
</p>

<h2>Modules</h2>

<p>
  The merged Modules proposal, <a href="http://wiki.edg.com/pub/Wg21kona2019/StrawPolls/p1103r3.pdf">P1103R3</a>, has been merged. There is SG15 (Tooling)
    agreement to create a TR for tool and build system solutions
  related to Modules. We also approved D1498R0,
  Constrained Internal Linkage for Modules, for C++20.
  Other than that, EWG is in bug-fix mode
    for Modules.
</p>
<h2>Coroutines</h2>

<p>
  The Coroutines TS has been merged. EWG is in bug-fix mode for
  Coroutines.
</p>

<h2>Aggregate initialization</h2>

<p>
  The proposal to allow paren-initializing aggregates,
  <a href="http://wiki.edg.com/pub/Wg21kona2019/StrawPolls/p0960r3.html">P0960</a>, has been merged.
</p>

<h2>Contracts</h2>

<p>
  P1290R1, Avoiding undefined behavior in contracts,
  and P1429R0, Contracts That Work were discussed, but failed
  to gain consensus. In addition, P1320R1, Allowing
  contract predicates on non-first declarations was discussed, but
  failed to gain consensus. EWG is in bug-fix mode for Contracts,
  but we expect various proposals to arrive for discussion in the
  Cologne meeting.
</p>


<h2>Some constexpr extensions</h2>

<p>
  We approved P1306R1, Expansion statements, and
  P0784R5, More constexpr containers, the latter without non-transient
  allocation, for C++20. We also approved P1331R0, Permitting trivial default
  initialization in constexpr contexts, for C++20.
</p>

<h2>Template argument deduction</h2>

<p>
  No current activity, EWG is in bug-fix mode for CTAD.
</p>

<h2>All Your Spaceships Are Belong to Us</h2>

<p>
  We discussed P1186R1,	When do you actually use &lt;=&gt;?,
  and approved it for C++20 with a tweak to synthesize strong and weak
  ordering only from == and &lt;. We also discussed
  P1186R1, When do you actually use &lt;=&gt;?, and approved
  it for C++20. This means that efaulting &lt;=&gt; unconditionally declares a
  defaulted ==.
</p>

<h2>Structured bindings</h2>

<p>
  We discussed P1481R0, constexpr structured bindings,
  and it failed to gain consensus for C++20. There's encouragement
  to do further work on the problem.
</p>

<h2>Guaranteed constant initialization for non-constexpr
  variables</h2>

<p>
  We approved P1143R1, Adding the constinit keyword, for C++20.
</p>

<h2>Deprecations</h2>

<p>
  We approved D1152R2, Deprecating volatile, for C++20.
</body>

<h2>Using enum</h2>

<p>We approved P1099R3, Using Enum, for C++20.
</p>

<h2>Implicit object creation</h2>
<p>
  We approved D0593R4, Implicit creation of objects for
  low-level object manipulation, for C++20.
</p>

<h2>Tweaks to move semantics</h2>

<p>We approved P1155R2, More implicit moves, for C++20.
</p>

<h2>Near-future EWG plans</h2>

<p>
  The high-order bit of our next steps are any necessary
  design clarifications and bug fixes, to happen in Cologne.
  Beyond that, possibly already starting in Cologne,
  Evolution will switch into C++23 mode while
  also doing ballot resolution for C++20 as necessary.
</p>
</html>
