<!doctype html><html lang="en">
 <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
  <title>P2206R0: Executors Thread Pool review report</title>
<style data-fill-with="stylesheet">/******************************************************************************
 *                   Style sheet for the W3C specifications                   *
 *
 * Special classes handled by this style sheet include:
 *
 * Indices
 *   - .toc for the Table of Contents (<ol class="toc">)
 *     + <span class="secno"> for the section numbers
 *   - #toc for the Table of Contents (<nav id="toc">)
 *   - ul.index for Indices (<a href="#ref">term</a><span>, in §N.M</span>)
 *   - table.index for Index Tables (e.g. for properties or elements)
 *
 * Structural Markup
 *   - table.data for general data tables
 *     -> use 'scope' attribute, <colgroup>, <thead>, and <tbody> for best results !
 *     -> use <table class='complex data'> for extra-complex tables
 *     -> use <td class='long'> for paragraph-length cell content
 *     -> use <td class='pre'> when manual line breaks/indentation would help readability
 *   - dl.switch for switch statements
 *   - ol.algorithm for algorithms (helps to visualize nesting)
 *   - .figure and .caption (HTML4) and figure and figcaption (HTML5)
 *     -> .sidefigure for right-floated figures
 *   - ins/del
 *
 * Code
 *   - pre and code
 *
 * Special Sections
 *   - .note       for informative notes             (div, p, span, aside, details)
 *   - .example    for informative examples          (div, p, pre, span)
 *   - .issue      for issues                        (div, p, span)
 *   - .assertion  for assertions                    (div, p, span)
 *   - .advisement for loud normative statements     (div, p, strong)
 *   - .annoying-warning for spec obsoletion notices (div, aside, details)
 *
 * Definition Boxes
 *   - pre.def   for WebIDL definitions
 *   - table.def for tables that define other entities (e.g. CSS properties)
 *   - dl.def    for definition lists that define other entitles (e.g. HTML elements)
 *
 * Numbering
 *   - .secno for section numbers in .toc and headings (<span class='secno'>3.2</span>)
 *   - .marker for source-inserted example/figure/issue numbers (<span class='marker'>Issue 4</span>)
 *   - ::before styled for CSS-generated issue/example/figure numbers:
 *     -> Documents wishing to use this only need to add
 *        figcaption::before,
 *        .caption::before { content: "Figure "  counter(figure) " ";  }
 *        .example::before { content: "Example " counter(example) " "; }
 *        .issue::before   { content: "Issue "   counter(issue) " ";   }
 *
 * Header Stuff (ignore, just don't conflict with these classes)
 *   - .head for the header
 *   - .copyright for the copyright
 *
 * Miscellaneous
 *   - .overlarge for things that should be as wide as possible, even if
 *     that overflows the body text area. This can be used on an item or
 *     on its container, depending on the effect desired.
 *     Note that this styling basically doesn't help at all when printing,
 *     since A4 paper isn't much wider than the max-width here.
 *     It's better to design things to fit into a narrower measure if possible.
 *   - js-added ToC jump links (see fixup.js)
 *
 ******************************************************************************/

/******************************************************************************/
/*                                   Body                                     */
/******************************************************************************/

	body {
		counter-reset: example figure issue;

		/* Layout */
		max-width: 50em;               /* limit line length to 50em for readability   */
		margin: 0 auto;                /* center text within page                     */
		padding: 1.6em 1.5em 2em 50px; /* assume 16px font size for downlevel clients */
		padding: 1.6em 1.5em 2em calc(26px + 1.5em); /* leave space for status flag     */

		/* Typography */
		line-height: 1.5;
		font-family: sans-serif;
		widows: 2;
		orphans: 2;
		word-wrap: break-word;
		overflow-wrap: break-word;
		hyphens: auto;

		/* Colors */
		color: black;
		background: white top left fixed no-repeat;
		background-size: 25px auto;
	}


/******************************************************************************/
/*                         Front Matter & Navigation                          */
/******************************************************************************/

/** Header ********************************************************************/

	div.head { margin-bottom: 1em }
	div.head hr { border-style: solid; }

	div.head h1 {
		font-weight: bold;
		margin: 0 0 .1em;
		font-size: 220%;
	}

	div.head h2 { margin-bottom: 1.5em;}

/** W3C Logo ******************************************************************/

	.head .logo {
		float: right;
		margin: 0.4rem 0 0.2rem .4rem;
	}

	.head img[src*="logos/W3C"] {
		display: block;
		border: solid #1a5e9a;
		border-width: .65rem .7rem .6rem;
		border-radius: .4rem;
		background: #1a5e9a;
		color: white;
		font-weight: bold;
	}

	.head a:hover > img[src*="logos/W3C"],
	.head a:focus > img[src*="logos/W3C"] {
		opacity: .8;
	}

	.head a:active > img[src*="logos/W3C"] {
		background: #c00;
		border-color: #c00;
	}

	/* see also additional rules in Link Styling section */

/** Copyright *****************************************************************/

	p.copyright,
	p.copyright small { font-size: small }

/** Back to Top / ToC Toggle **************************************************/

	@media print {
		#toc-nav {
			display: none;
		}
	}
	@media not print {
		#toc-nav {
			position: fixed;
			z-index: 2;
			bottom: 0; left: 0;
			margin: 0;
			min-width: 1.33em;
			border-top-right-radius: 2rem;
			box-shadow: 0 0 2px;
			font-size: 1.5em;
			color: black;
		}
		#toc-nav > a {
			display: block;
			white-space: nowrap;

			height: 1.33em;
			padding: .1em 0.3em;
			margin: 0;

			background: white;
			box-shadow: 0 0 2px;
			border: none;
			border-top-right-radius: 1.33em;
			background: white;
		}
		#toc-nav > #toc-jump {
			padding-bottom: 2em;
			margin-bottom: -1.9em;
		}

		#toc-nav > a:hover,
		#toc-nav > a:focus {
			background: #f8f8f8;
		}
		#toc-nav > a:not(:hover):not(:focus) {
			color: #707070;
		}

		/* statusbar gets in the way on keyboard focus; remove once browsers fix */
		#toc-nav > a[href="#toc"]:not(:hover):focus:last-child {
			padding-bottom: 1.5rem;
		}

		#toc-nav:not(:hover) > a:not(:focus) > span + span {
			/* Ideally this uses :focus-within on #toc-nav */
			display: none;
		}
		#toc-nav > a > span + span {
			padding-right: 0.2em;
		}

		#toc-toggle-inline {
			vertical-align: 0.05em;
			font-size: 80%;
			color: gray;
			color: hsla(203,20%,40%,.7);
			border-style: none;
			background: transparent;
			position: relative;
		}
		#toc-toggle-inline:hover:not(:active),
		#toc-toggle-inline:focus:not(:active) {
			text-shadow: 1px 1px silver;
			top: -1px;
			left: -1px;
		}

		#toc-nav :active {
			color: #C00;
		}
	}

/** ToC Sidebar ***************************************************************/

	/* Floating sidebar */
	@media screen {
		body.toc-sidebar #toc {
			position: fixed;
			top: 0; bottom: 0;
			left: 0;
			width: 23.5em;
			max-width: 80%;
			max-width: calc(100% - 2em - 26px);
			overflow: auto;
			padding: 0 1em;
			padding-left: 42px;
			padding-left: calc(1em + 26px);
			background: inherit;
			background-color: #f7f8f9;
			z-index: 1;
			box-shadow: -.1em 0 .25em rgba(0,0,0,.1) inset;
		}
		body.toc-sidebar #toc h2 {
			margin-top: .8rem;
			font-variant: small-caps;
			font-variant: all-small-caps;
			text-transform: lowercase;
			font-weight: bold;
			color: gray;
			color: hsla(203,20%,40%,.7);
		}
		body.toc-sidebar #toc-jump:not(:focus) {
			width: 0;
			height: 0;
			padding: 0;
			position: absolute;
			overflow: hidden;
		}
	}
	/* Hide main scroller when only the ToC is visible anyway */
	@media screen and (max-width: 28em) {
		body.toc-sidebar {
			overflow: hidden;
		}
	}

	/* Sidebar with its own space */
	@media screen and (min-width: 78em) {
		body:not(.toc-inline) #toc {
			position: fixed;
			top: 0; bottom: 0;
			left: 0;
			width: 23.5em;
			overflow: auto;
			padding: 0 1em;
			padding-left: 42px;
			padding-left: calc(1em + 26px);
			background: inherit;
			background-color: #f7f8f9;
			z-index: 1;
			box-shadow: -.1em 0 .25em rgba(0,0,0,.1) inset;
		}
		body:not(.toc-inline) #toc h2 {
			margin-top: .8rem;
			font-variant: small-caps;
			font-variant: all-small-caps;
			text-transform: lowercase;
			font-weight: bold;
			color: gray;
			color: hsla(203,20%,40%,.7);
		}

		body:not(.toc-inline) {
			padding-left: 29em;
		}
		/* See also Overflow section at the bottom */

		body:not(.toc-inline) #toc-jump:not(:focus) {
			width: 0;
			height: 0;
			padding: 0;
			position: absolute;
			overflow: hidden;
		}
	}
	@media screen and (min-width: 90em) {
		body:not(.toc-inline) {
			margin: 0 4em;
		}
	}

/******************************************************************************/
/*                                Sectioning                                  */
/******************************************************************************/

/** Headings ******************************************************************/

	h1, h2, h3, h4, h5, h6, dt {
		page-break-after: avoid;
		page-break-inside: avoid;
		font: 100% sans-serif;   /* Reset all font styling to clear out UA styles */
		font-family: inherit;    /* Inherit the font family. */
		line-height: 1.2;        /* Keep wrapped headings compact */
		hyphens: manual;         /* Hyphenated headings look weird */
	}

	h2, h3, h4, h5, h6 {
		margin-top: 3rem;
	}

	h1, h2, h3 {
		color: #005A9C;
		background: transparent;
	}

	h1 { font-size: 170%; }
	h2 { font-size: 140%; }
	h3 { font-size: 120%; }
	h4 { font-weight: bold; }
	h5 { font-style: italic; }
	h6 { font-variant: small-caps; }
	dt { font-weight: bold; }

/** Subheadings ***************************************************************/

	h1 + h2,
	#subtitle {
		/* #subtitle is a subtitle in an H2 under the H1 */
		margin-top: 0;
	}
	h2 + h3,
	h3 + h4,
	h4 + h5,
	h5 + h6 {
		margin-top: 1.2em; /* = 1 x line-height */
	}

/** Section divider ***********************************************************/

	:not(.head) > hr {
		font-size: 1.5em;
		text-align: center;
		margin: 1em auto;
		height: auto;
		border: transparent solid 0;
		background: transparent;
	}
	:not(.head) > hr::before {
		content: "\2727\2003\2003\2727\2003\2003\2727";
	}

/******************************************************************************/
/*                            Paragraphs and Lists                            */
/******************************************************************************/

	p {
		margin: 1em 0;
	}

	dd > p:first-child,
	li > p:first-child {
		margin-top: 0;
	}

	ul, ol {
		margin-left: 0;
		padding-left: 2em;
	}

	li {
		margin: 0.25em 0 0.5em;
		padding: 0;
	}

	dl dd {
		margin: 0 0 .5em 2em;
	}

	.head dd + dd { /* compact for header */
		margin-top: -.5em;
	}

	/* Style for algorithms */
	ol.algorithm ol:not(.algorithm),
	.algorithm > ol ol:not(.algorithm) {
	 border-left: 0.5em solid #DEF;
	}

	/* Put nice boxes around each algorithm. */
	[data-algorithm]:not(.heading) {
	  padding: .5em;
	  border: thin solid #ddd; border-radius: .5em;
	  margin: .5em calc(-0.5em - 1px);
	}
	[data-algorithm]:not(.heading) > :first-child {
	  margin-top: 0;
	}
	[data-algorithm]:not(.heading) > :last-child {
	  margin-bottom: 0;
	}

	/* Style for switch/case <dl>s */
	dl.switch > dd > ol.only,
	dl.switch > dd > .only > ol {
	 margin-left: 0;
	}
	dl.switch > dd > ol.algorithm,
	dl.switch > dd > .algorithm > ol {
	 margin-left: -2em;
	}
	dl.switch {
	 padding-left: 2em;
	}
	dl.switch > dt {
	 text-indent: -1.5em;
	 margin-top: 1em;
	}
	dl.switch > dt + dt {
	 margin-top: 0;
	}
	dl.switch > dt::before {
	 content: '\21AA';
	 padding: 0 0.5em 0 0;
	 display: inline-block;
	 width: 1em;
	 text-align: right;
	 line-height: 0.5em;
	}

/** Terminology Markup ********************************************************/


/******************************************************************************/
/*                                 Inline Markup                              */
/******************************************************************************/

/** Terminology Markup ********************************************************/
	dfn   { /* Defining instance */
		font-weight: bolder;
	}
	a > i { /* Instance of term */
		font-style: normal;
	}
	dt dfn code, code.idl {
		font-size: medium;
	}
	dfn var {
		font-style: normal;
	}

/** Change Marking ************************************************************/

	del { color: red;  text-decoration: line-through; }
	ins { color: #080; text-decoration: underline;    }

/** Miscellaneous improvements to inline formatting ***************************/

	sup {
		vertical-align: super;
		font-size: 80%
	}

/******************************************************************************/
/*                                    Code                                    */
/******************************************************************************/

/** General monospace/pre rules ***********************************************/

	pre, code, samp {
		font-family: Menlo, Consolas, "DejaVu Sans Mono", Monaco, monospace;
		font-size: .9em;
		page-break-inside: avoid;
		hyphens: none;
		text-transform: none;
	}
	pre code,
	code code {
		font-size: 100%;
	}

	pre {
		margin-top: 1em;
		margin-bottom: 1em;
		overflow: auto;
	}

/** Inline Code fragments *****************************************************/

  /* Do something nice. */

/******************************************************************************/
/*                                    Links                                   */
/******************************************************************************/

/** General Hyperlinks ********************************************************/

	/* We hyperlink a lot, so make it less intrusive */
	a[href] {
		color: #034575;
		text-decoration: none;
		border-bottom: 1px solid #707070;
		/* Need a bit of extending for it to look okay */
		padding: 0 1px 0;
		margin: 0 -1px 0;
	}
	a:visited {
		border-bottom-color: #BBB;
	}

	/* Use distinguishing colors when user is interacting with the link */
	a[href]:focus,
	a[href]:hover {
		background: #f8f8f8;
		background: rgba(75%, 75%, 75%, .25);
		border-bottom-width: 3px;
		margin-bottom: -2px;
	}
	a[href]:active {
		color: #C00;
		border-color: #C00;
	}

	/* Backout above styling for W3C logo */
	.head .logo,
	.head .logo a {
		border: none;
		text-decoration: none;
		background: transparent;
	}

/******************************************************************************/
/*                                    Images                                  */
/******************************************************************************/

	img {
		border-style: none;
	}

	/* For autogen numbers, add
	   .caption::before, figcaption::before { content: "Figure " counter(figure) ". "; }
	*/

	figure, .figure, .sidefigure {
		page-break-inside: avoid;
		text-align: center;
		margin: 2.5em 0;
	}
	.figure img,    .sidefigure img,    figure img,
	.figure object, .sidefigure object, figure object {
		max-width: 100%;
		margin: auto;
	}
	.figure pre, .sidefigure pre, figure pre {
		text-align: left;
		display: table;
		margin: 1em auto;
	}
	.figure table, figure table {
		margin: auto;
	}
	@media screen and (min-width: 20em) {
		.sidefigure {
			float: right;
			width: 50%;
			margin: 0 0 0.5em 0.5em
		}
	}
	.caption, figcaption, caption {
		font-style: italic;
		font-size: 90%;
	}
	.caption::before, figcaption::before, figcaption > .marker {
		font-weight: bold;
	}
	.caption, figcaption {
		counter-increment: figure;
	}

	/* DL list is indented 2em, but figure inside it is not */
	dd > .figure, dd > figure { margin-left: -2em }

/******************************************************************************/
/*                             Colored Boxes                                  */
/******************************************************************************/

	.issue, .note, .example, .assertion, .advisement, blockquote {
		padding: .5em;
		border: .5em;
		border-left-style: solid;
		page-break-inside: avoid;
	}
	span.issue, span.note {
		padding: .1em .5em .15em;
		border-right-style: solid;
	}

	.issue,
	.note,
	.example,
	.advisement,
	.assertion,
	blockquote {
		margin: 1em auto;
	}
	.note  > p:first-child,
	.issue > p:first-child,
	blockquote > :first-child {
		margin-top: 0;
	}
	blockquote > :last-child {
		margin-bottom: 0;
	}

/** Blockquotes ***************************************************************/

	blockquote {
		border-color: silver;
	}

/** Open issue ****************************************************************/

	.issue {
		border-color: #E05252;
		background: #FBE9E9;
		counter-increment: issue;
		overflow: auto;
	}
	.issue::before, .issue > .marker {
		text-transform: uppercase;
		color: #AE1E1E;
		padding-right: 1em;
		text-transform: uppercase;
	}
	/* Add .issue::before { content: "Issue " counter(issue) " "; } for autogen numbers,
	   or use class="marker" to mark up the issue number in source. */

/** Example *******************************************************************/

	.example {
		border-color: #E0CB52;
		background: #FCFAEE;
		counter-increment: example;
		overflow: auto;
		clear: both;
	}
	.example::before, .example > .marker {
		text-transform: uppercase;
		color: #827017;
		min-width: 7.5em;
		display: block;
	}
	/* Add .example::before { content: "Example " counter(example) " "; } for autogen numbers,
	   or use class="marker" to mark up the example number in source. */

/** Non-normative Note ********************************************************/

	.note {
		border-color: #52E052;
		background: #E9FBE9;
		overflow: auto;
	}

	.note::before, .note > .marker,
	details.note > summary::before,
	details.note > summary > .marker {
		text-transform: uppercase;
		display: block;
		color: hsl(120, 70%, 30%);
	}
	/* Add .note::before { content: "Note"; } for autogen label,
	   or use class="marker" to mark up the label in source. */

	details.note > summary {
		display: block;
		color: hsl(120, 70%, 30%);
	}
	details.note[open] > summary {
		border-bottom: 1px silver solid;
	}

/** Assertion Box *************************************************************/
	/*  for assertions in algorithms */

	.assertion {
		border-color: #AAA;
		background: #EEE;
	}

/** Advisement Box ************************************************************/
	/*  for attention-grabbing normative statements */

	.advisement {
		border-color: orange;
		border-style: none solid;
		background: #FFEECC;
	}
	strong.advisement {
		display: block;
		text-align: center;
	}
	.advisement > .marker {
		color: #B35F00;
	}

/** Spec Obsoletion Notice ****************************************************/
	/* obnoxious obsoletion notice for older/abandoned specs. */

	details {
		display: block;
	}
	summary {
		font-weight: bolder;
	}

	.annoying-warning:not(details),
	details.annoying-warning:not([open]) > summary,
	details.annoying-warning[open] {
		background: #fdd;
		color: red;
		font-weight: bold;
		padding: .75em 1em;
		border: thick red;
		border-style: solid;
		border-radius: 1em;
	}
	.annoying-warning :last-child {
		margin-bottom: 0;
	}

@media not print {
	details.annoying-warning[open] {
		position: fixed;
		left: 1em;
		right: 1em;
		bottom: 1em;
		z-index: 1000;
	}
}

	details.annoying-warning:not([open]) > summary {
		text-align: center;
	}

/** Entity Definition Boxes ***************************************************/

	.def {
		padding: .5em 1em;
		background: #DEF;
		margin: 1.2em 0;
		border-left: 0.5em solid #8CCBF2;
	}

/******************************************************************************/
/*                                    Tables                                  */
/******************************************************************************/

	th, td {
		text-align: left;
		text-align: start;
	}

/** Property/Descriptor Definition Tables *************************************/

	table.def {
		/* inherits .def box styling, see above */
		width: 100%;
		border-spacing: 0;
	}

	table.def td,
	table.def th {
		padding: 0.5em;
		vertical-align: baseline;
		border-bottom: 1px solid #bbd7e9;
	}

	table.def > tbody > tr:last-child th,
	table.def > tbody > tr:last-child td {
		border-bottom: 0;
	}

	table.def th {
		font-style: italic;
		font-weight: normal;
		padding-left: 1em;
		width: 3em;
	}

	/* For when values are extra-complex and need formatting for readability */
	table td.pre {
		white-space: pre-wrap;
	}

	/* A footnote at the bottom of a def table */
	table.def           td.footnote {
		padding-top: 0.6em;
	}
	table.def           td.footnote::before {
		content: " ";
		display: block;
		height: 0.6em;
		width: 4em;
		border-top: thin solid;
	}

/** Data tables (and properly marked-up index tables) *************************/
	/*
		 <table class="data"> highlights structural relationships in a table
		 when correct markup is used (e.g. thead/tbody, th vs. td, scope attribute)

		 Use class="complex data" for particularly complicated tables --
		 (This will draw more lines: busier, but clearer.)

		 Use class="long" on table cells with paragraph-like contents
		 (This will adjust text alignment accordingly.)
		 Alternately use class="longlastcol" on tables, to have the last column assume "long".
	*/

	table {
		word-wrap: normal;
		overflow-wrap: normal;
		hyphens: manual;
	}

	table.data,
	table.index {
		margin: 1em auto;
		border-collapse: collapse;
		border: hidden;
		width: 100%;
	}
	table.data caption,
	table.index caption {
		max-width: 50em;
		margin: 0 auto 1em;
	}

	table.data td,  table.data th,
	table.index td, table.index th {
		padding: 0.5em 1em;
		border-width: 1px;
		border-color: silver;
		border-top-style: solid;
	}

	table.data thead td:empty {
		padding: 0;
		border: 0;
	}

	table.data  thead,
	table.index thead,
	table.data  tbody,
	table.index tbody {
		border-bottom: 2px solid;
	}

	table.data colgroup,
	table.index colgroup {
		border-left: 2px solid;
	}

	table.data  tbody th:first-child,
	table.index tbody th:first-child  {
		border-right: 2px solid;
		border-top: 1px solid silver;
		padding-right: 1em;
	}

	table.data th[colspan],
	table.data td[colspan] {
		text-align: center;
	}

	table.complex.data th,
	table.complex.data td {
		border: 1px solid silver;
		text-align: center;
	}

	table.data.longlastcol td:last-child,
	table.data td.long {
	 vertical-align: baseline;
	 text-align: left;
	}

	table.data img {
		vertical-align: middle;
	}


/*
Alternate table alignment rules

	table.data,
	table.index {
		text-align: center;
	}

	table.data  thead th[scope="row"],
	table.index thead th[scope="row"] {
		text-align: right;
	}

	table.data  tbody th:first-child,
	table.index tbody th:first-child  {
		text-align: right;
	}

Possible extra rowspan handling

	table.data  tbody th[rowspan]:not([rowspan='1']),
	table.index tbody th[rowspan]:not([rowspan='1']),
	table.data  tbody td[rowspan]:not([rowspan='1']),
	table.index tbody td[rowspan]:not([rowspan='1']) {
		border-left: 1px solid silver;
	}

	table.data  tbody th[rowspan]:first-child,
	table.index tbody th[rowspan]:first-child,
	table.data  tbody td[rowspan]:first-child,
	table.index tbody td[rowspan]:first-child{
		border-left: 0;
		border-right: 1px solid silver;
	}
*/

/******************************************************************************/
/*                                  Indices                                   */
/******************************************************************************/


/** Table of Contents *********************************************************/

	.toc a {
		/* More spacing; use padding to make it part of the click target. */
		padding-top: 0.1rem;
		/* Larger, more consistently-sized click target */
		display: block;
		/* Reverse color scheme */
		color: black;
		border-color: #3980B5;
		border-bottom-width: 3px !important;
		margin-bottom: 0px !important;
	}
	.toc a:visited {
		border-color: #054572;
	}
	.toc a:not(:focus):not(:hover) {
		/* Allow colors to cascade through from link styling */
		border-bottom-color: transparent;
	}

	.toc, .toc ol, .toc ul, .toc li {
		list-style: none; /* Numbers must be inlined into source */
		/* because generated content isn't search/selectable and markers can't do multilevel yet */
		margin:  0;
		padding: 0;
		line-height: 1.1rem; /* consistent spacing */
	}

	/* ToC not indented until third level, but font style & margins show hierarchy */
	.toc > li             { font-weight: bold;   }
	.toc > li li          { font-weight: normal; }
	.toc > li li li       { font-size:   95%;    }
	.toc > li li li li    { font-size:   90%;    }
	.toc > li li li li .secno { font-size: 85%; }
	.toc > li li li li li { font-size:   85%;    }
	.toc > li li li li li .secno { font-size: 100%; }

	/* @supports not (display:grid) { */
		.toc > li             { margin: 1.5rem 0;    }
		.toc > li li          { margin: 0.3rem 0;    }
		.toc > li li li       { margin-left: 2rem;   }

		/* Section numbers in a column of their own */
		.toc .secno {
			float: left;
			width: 4rem;
			white-space: nowrap;
		}

		.toc li {
			clear: both;
		}

		:not(li) > .toc              { margin-left:  5rem; }
		.toc .secno                  { margin-left: -5rem; }
		.toc > li li li .secno       { margin-left: -7rem; }
		.toc > li li li li .secno    { margin-left: -9rem; }
		.toc > li li li li li .secno { margin-left: -11rem; }

		/* Tighten up indentation in narrow ToCs */
		@media (max-width: 30em) {
			:not(li) > .toc              { margin-left:  4rem; }
			.toc .secno                  { margin-left: -4rem; }
			.toc > li li li              { margin-left:  1rem; }
			.toc > li li li .secno       { margin-left: -5rem; }
			.toc > li li li li .secno    { margin-left: -6rem; }
			.toc > li li li li li .secno { margin-left: -7rem; }
		}
	/* } */

	@supports (display:grid) and (display:contents) {
		/* Use #toc over .toc to override non-@supports rules. */
		#toc {
			display: grid;
			align-content: start;
			grid-template-columns: auto 1fr;
			grid-column-gap: 1rem;
			column-gap: 1rem;
			grid-row-gap: .6rem;
			row-gap: .6rem;
		}
		#toc h2 {
			grid-column: 1 / -1;
			margin-bottom: 0;
		}
		#toc ol,
		#toc li,
		#toc a {
			display: contents;
			/* Switch <a> to subgrid when supported */
		}
		#toc span {
			margin: 0;
		}
		#toc > .toc > li > a > span {
			/* The spans of the top-level list,
			   comprising the first items of each top-level section. */
			margin-top: 1.1rem;
		}
		#toc#toc .secno { /* Ugh, need more specificity to override base.css */
			grid-column: 1;
			width: auto;
			margin-left: 0;
		}
		#toc .content {
			grid-column: 2;
			width: auto;
			margin-right: 1rem;
		}
		#toc .content:hover {
			background: rgba(75%, 75%, 75%, .25);
			border-bottom: 3px solid #054572;
			margin-bottom: -3px;
		}
		#toc li li li .content {
			margin-left: 1rem;
		}
		#toc li li li li .content {
			margin-left: 2rem;
		}
	}


/** Index *********************************************************************/

	/* Index Lists: Layout */
	ul.index       { margin-left: 0; columns: 15em; text-indent: 1em hanging; }
	ul.index li    { margin-left: 0; list-style: none; break-inside: avoid; }
	ul.index li li { margin-left: 1em }
	ul.index dl    { margin-top: 0; }
	ul.index dt    { margin: .2em 0 .2em 20px;}
	ul.index dd    { margin: .2em 0 .2em 40px;}
	/* Index Lists: Typography */
	ul.index ul,
	ul.index dl { font-size: smaller; }
	@media not print {
		ul.index li span {
			white-space: nowrap;
			color: transparent; }
		ul.index li a:hover + span,
		ul.index li a:focus + span {
			color: #707070;
		}
	}

/** Index Tables *****************************************************/
	/* See also the data table styling section, which this effectively subclasses */

	table.index {
		font-size: small;
		border-collapse: collapse;
		border-spacing: 0;
		text-align: left;
		margin: 1em 0;
	}

	table.index td,
	table.index th {
		padding: 0.4em;
	}

	table.index tr:hover td:not([rowspan]),
	table.index tr:hover th:not([rowspan]) {
		background: #f7f8f9;
	}

	/* The link in the first column in the property table (formerly a TD) */
	table.index th:first-child a {
		font-weight: bold;
	}

/******************************************************************************/
/*                                    Print                                   */
/******************************************************************************/

	@media print {
		/* Pages have their own margins. */
		html {
			margin: 0;
		}
		/* Serif for print. */
		body {
			font-family: serif;
		}
	}
	@page {
		margin: 1.5cm 1.1cm;
	}

/******************************************************************************/
/*                                    Legacy                                  */
/******************************************************************************/

	/* This rule is inherited from past style sheets. No idea what it's for. */
	.hide { display: none }



/******************************************************************************/
/*                             Overflow Control                               */
/******************************************************************************/

	.figure .caption, .sidefigure .caption, figcaption {
		/* in case figure is overlarge, limit caption to 50em */
		max-width: 50rem;
		margin-left: auto;
		margin-right: auto;
	}
	.overlarge {
		/* Magic to create good table positioning:
		   "content column" is 50ems wide at max; less on smaller screens.
		   Extra space (after ToC + content) is empty on the right.

		   1. When table < content column, centers table in column.
		   2. When content < table < available, left-aligns.
		   3. When table > available, fills available + scroll bar.
		*/
		display: grid;
		grid-template-columns: minmax(0, 50em);
	}
	.overlarge > table {
		/* limit preferred width of table */
		max-width: 50em;
		margin-left: auto;
		margin-right: auto;
	}

	@media (min-width: 55em) {
		.overlarge {
			margin-right: calc(13px + 26.5rem - 50vw);
			max-width: none;
		}
	}
	@media screen and (min-width: 78em) {
		body:not(.toc-inline) .overlarge {
			/* 30.5em body padding 50em content area */
			margin-right: calc(40em - 50vw) !important;
		}
	}
	@media screen and (min-width: 90em) {
		body:not(.toc-inline) .overlarge {
			/* 4em html margin 30.5em body padding 50em content area */
			margin-right: calc(84.5em - 100vw) !important;
		}
	}

	@media not print {
		.overlarge {
			overflow-x: auto;
			/* See Lea Verou's explanation background-attachment:
			 * http://lea.verou.me/2012/04/background-attachment-local/
			 *
			background: top left  / 4em 100% linear-gradient(to right,  #ffffff, rgba(255, 255, 255, 0)) local,
			            top right / 4em 100% linear-gradient(to left, #ffffff, rgba(255, 255, 255, 0)) local,
			            top left  / 1em 100% linear-gradient(to right,  #c3c3c5, rgba(195, 195, 197, 0)) scroll,
			            top right / 1em 100% linear-gradient(to left, #c3c3c5, rgba(195, 195, 197, 0)) scroll,
			            white;
			background-repeat: no-repeat;
			*/
		}
	}
</style>
<style type="text/css">
    table, th, td {
      border: 1px solid black;
      border-collapse: collapse;
      vertical-align: top;
    }
    th, td {
      border-left: none;
      border-right: none;
      padding: 0px 10px;
    }
    th {
      text-align: center;
    }

    del { background: #fcc; color: #000; text-decoration: line-through; }
    ins { background: #cfc; color: #000; }
    blockquote .highlight:not(.idl) { background: initial; margin: initial; padding: 0.5em }
    blockquote ul { background: inherit; }
    blockquote code.highlight:not(.idl) { padding: initial; }
    blockquote c-[a] { color: inherit; } /* Keyword.Declaration */
    blockquote c-[b] { color: inherit; } /* Keyword.Type */
    blockquote c-[c] { color: inherit; } /* Comment */
    blockquote c-[d] { color: inherit; } /* Comment.Multiline */
    blockquote c-[e] { color: inherit; } /* Name.Attribute */
    blockquote c-[f] { color: inherit; } /* Name.Tag */
    blockquote c-[g] { color: inherit; } /* Name.Variable */
    blockquote c-[k] { color: inherit; } /* Keyword */
    blockquote c-[l] { color: inherit; } /* Literal */
    blockquote c-[m] { color: inherit; } /* Literal.Number */
    blockquote c-[n] { color: inherit; } /* Name */
    blockquote c-[o] { color: inherit; } /* Operator */
    blockquote c-[p] { color: inherit; } /* Punctuation */
    blockquote c-[s] { color: inherit; } /* Literal.String */
    blockquote c-[t] { color: inherit; } /* Literal.String.Single */
    blockquote c-[u] { color: inherit; } /* Literal.String.Double */
    blockquote c-[cp] { color: inherit; } /* Comment.Preproc */
    blockquote c-[c1] { color: inherit; } /* Comment.Single */
    blockquote c-[cs] { color: inherit; } /* Comment.Special */
    blockquote c-[kc] { color: inherit; } /* Keyword.Constant */
    blockquote c-[kn] { color: inherit; } /* Keyword.Namespace */
    blockquote c-[kp] { color: inherit; } /* Keyword.Pseudo */
    blockquote c-[kr] { color: inherit; } /* Keyword.Reserved */
    blockquote c-[ld] { color: inherit; } /* Literal.Date */
    blockquote c-[nc] { color: inherit; } /* Name.Class */
    blockquote c-[no] { color: inherit; } /* Name.Constant */
    blockquote c-[nd] { color: inherit; } /* Name.Decorator */
    blockquote c-[ni] { color: inherit; } /* Name.Entity */
    blockquote c-[ne] { color: inherit; } /* Name.Exception */
    blockquote c-[nf] { color: inherit; } /* Name.Function */
    blockquote c-[nl] { color: inherit; } /* Name.Label */
    blockquote c-[nn] { color: inherit; } /* Name.Namespace */
    blockquote c-[py] { color: inherit; } /* Name.Property */
    blockquote c-[ow] { color: inherit; } /* Operator.Word */
    blockquote c-[mb] { color: inherit; } /* Literal.Number.Bin */
    blockquote c-[mf] { color: inherit; } /* Literal.Number.Float */
    blockquote c-[mh] { color: inherit; } /* Literal.Number.Hex */
    blockquote c-[mi] { color: inherit; } /* Literal.Number.Integer */
    blockquote c-[mo] { color: inherit; } /* Literal.Number.Oct */
    blockquote c-[sb] { color: inherit; } /* Literal.String.Backtick */
    blockquote c-[sc] { color: inherit; } /* Literal.String.Char */
    blockquote c-[sd] { color: inherit; } /* Literal.String.Doc */
    blockquote c-[se] { color: inherit; } /* Literal.String.Escape */
    blockquote c-[sh] { color: inherit; } /* Literal.String.Heredoc */
    blockquote c-[si] { color: inherit; } /* Literal.String.Interpol */
    blockquote c-[sx] { color: inherit; } /* Literal.String.Other */
    blockquote c-[sr] { color: inherit; } /* Literal.String.Regex */
    blockquote c-[ss] { color: inherit; } /* Literal.String.Symbol */
    blockquote c-[vc] { color: inherit; } /* Name.Variable.Class */
    blockquote c-[vg] { color: inherit; } /* Name.Variable.Global */
    blockquote c-[vi] { color: inherit; } /* Name.Variable.Instance */
    blockquote c-[il] { color: inherit; } /* Literal.Number.Integer.Long */
  </style>
  <meta content="Bikeshed version 5f7b0e20, updated Tue Aug 18 15:46:28 2020 -0700" name="generator">
  <link href="http://wg21.link/P2206R0" rel="canonical">
  <link href="https://isocpp.org/favicon.ico" rel="icon">
  <meta content="1bae1887a33a475c431bc38b8a66e990f889ef21" name="document-revision">
<style>/* style-autolinks */

.css.css, .property.property, .descriptor.descriptor {
    color: #005a9c;
    font-size: inherit;
    font-family: inherit;
}
.css::before, .property::before, .descriptor::before {
    content: "‘";
}
.css::after, .property::after, .descriptor::after {
    content: "’";
}
.property, .descriptor {
    /* Don't wrap property and descriptor names */
    white-space: nowrap;
}
.type { /* CSS value <type> */
    font-style: italic;
}
pre .property::before, pre .property::after {
    content: "";
}
[data-link-type="property"]::before,
[data-link-type="propdesc"]::before,
[data-link-type="descriptor"]::before,
[data-link-type="value"]::before,
[data-link-type="function"]::before,
[data-link-type="at-rule"]::before,
[data-link-type="selector"]::before,
[data-link-type="maybe"]::before {
    content: "‘";
}
[data-link-type="property"]::after,
[data-link-type="propdesc"]::after,
[data-link-type="descriptor"]::after,
[data-link-type="value"]::after,
[data-link-type="function"]::after,
[data-link-type="at-rule"]::after,
[data-link-type="selector"]::after,
[data-link-type="maybe"]::after {
    content: "’";
}

[data-link-type].production::before,
[data-link-type].production::after,
.prod [data-link-type]::before,
.prod [data-link-type]::after {
    content: "";
}

[data-link-type=element],
[data-link-type=element-attr] {
    font-family: Menlo, Consolas, "DejaVu Sans Mono", monospace;
    font-size: .9em;
}
[data-link-type=element]::before { content: "<" }
[data-link-type=element]::after  { content: ">" }

[data-link-type=biblio] {
    white-space: pre;
}</style>
<style>/* style-counters */

body {
    counter-reset: example figure issue;
}
.issue {
    counter-increment: issue;
}
.issue:not(.no-marker)::before {
    content: "Issue " counter(issue);
}

.example {
    counter-increment: example;
}
.example:not(.no-marker)::before {
    content: "Example " counter(example);
}
.invalid.example:not(.no-marker)::before,
.illegal.example:not(.no-marker)::before {
    content: "Invalid Example" counter(example);
}

figcaption {
    counter-increment: figure;
}
figcaption:not(.no-marker)::before {
    content: "Figure " counter(figure) " ";
}</style>
<style>/* style-md-lists */

/* This is a weird hack for me not yet following the commonmark spec
   regarding paragraph and lists. */
[data-md] > :first-child {
    margin-top: 0;
}
[data-md] > :last-child {
    margin-bottom: 0;
}</style>
<style>/* style-selflinks */

.heading, .issue, .note, .example, li, dt {
    position: relative;
}
a.self-link {
    position: absolute;
    top: 0;
    left: calc(-1 * (3.5rem - 26px));
    width: calc(3.5rem - 26px);
    height: 2em;
    text-align: center;
    border: none;
    transition: opacity .2s;
    opacity: .5;
}
a.self-link:hover {
    opacity: 1;
}
.heading > a.self-link {
    font-size: 83%;
}
li > a.self-link {
    left: calc(-1 * (3.5rem - 26px) - 2em);
}
dfn > a.self-link {
    top: auto;
    left: auto;
    opacity: 0;
    width: 1.5em;
    height: 1.5em;
    background: gray;
    color: white;
    font-style: normal;
    transition: opacity .2s, background-color .2s, color .2s;
}
dfn:hover > a.self-link {
    opacity: 1;
}
dfn > a.self-link:hover {
    color: black;
}

a.self-link::before            { content: "¶"; }
.heading > a.self-link::before { content: "§"; }
dfn > a.self-link::before      { content: "#"; }</style>
<style>/* style-syntax-highlighting */

.highlight:not(.idl) { background: hsl(24, 20%, 95%); }
code.highlight { padding: .1em; border-radius: .3em; }
pre.highlight, pre > code.highlight { display: block; padding: 1em; margin: .5em 0; overflow: auto; border-radius: 0; }
c-[a] { color: #990055 } /* Keyword.Declaration */
c-[b] { color: #990055 } /* Keyword.Type */
c-[c] { color: #708090 } /* Comment */
c-[d] { color: #708090 } /* Comment.Multiline */
c-[e] { color: #0077aa } /* Name.Attribute */
c-[f] { color: #669900 } /* Name.Tag */
c-[g] { color: #222222 } /* Name.Variable */
c-[k] { color: #990055 } /* Keyword */
c-[l] { color: #000000 } /* Literal */
c-[m] { color: #000000 } /* Literal.Number */
c-[n] { color: #0077aa } /* Name */
c-[o] { color: #999999 } /* Operator */
c-[p] { color: #999999 } /* Punctuation */
c-[s] { color: #a67f59 } /* Literal.String */
c-[t] { color: #a67f59 } /* Literal.String.Single */
c-[u] { color: #a67f59 } /* Literal.String.Double */
c-[cp] { color: #708090 } /* Comment.Preproc */
c-[c1] { color: #708090 } /* Comment.Single */
c-[cs] { color: #708090 } /* Comment.Special */
c-[kc] { color: #990055 } /* Keyword.Constant */
c-[kn] { color: #990055 } /* Keyword.Namespace */
c-[kp] { color: #990055 } /* Keyword.Pseudo */
c-[kr] { color: #990055 } /* Keyword.Reserved */
c-[ld] { color: #000000 } /* Literal.Date */
c-[nc] { color: #0077aa } /* Name.Class */
c-[no] { color: #0077aa } /* Name.Constant */
c-[nd] { color: #0077aa } /* Name.Decorator */
c-[ni] { color: #0077aa } /* Name.Entity */
c-[ne] { color: #0077aa } /* Name.Exception */
c-[nf] { color: #0077aa } /* Name.Function */
c-[nl] { color: #0077aa } /* Name.Label */
c-[nn] { color: #0077aa } /* Name.Namespace */
c-[py] { color: #0077aa } /* Name.Property */
c-[ow] { color: #999999 } /* Operator.Word */
c-[mb] { color: #000000 } /* Literal.Number.Bin */
c-[mf] { color: #000000 } /* Literal.Number.Float */
c-[mh] { color: #000000 } /* Literal.Number.Hex */
c-[mi] { color: #000000 } /* Literal.Number.Integer */
c-[mo] { color: #000000 } /* Literal.Number.Oct */
c-[sb] { color: #a67f59 } /* Literal.String.Backtick */
c-[sc] { color: #a67f59 } /* Literal.String.Char */
c-[sd] { color: #a67f59 } /* Literal.String.Doc */
c-[se] { color: #a67f59 } /* Literal.String.Escape */
c-[sh] { color: #a67f59 } /* Literal.String.Heredoc */
c-[si] { color: #a67f59 } /* Literal.String.Interpol */
c-[sx] { color: #a67f59 } /* Literal.String.Other */
c-[sr] { color: #a67f59 } /* Literal.String.Regex */
c-[ss] { color: #a67f59 } /* Literal.String.Symbol */
c-[vc] { color: #0077aa } /* Name.Variable.Class */
c-[vg] { color: #0077aa } /* Name.Variable.Global */
c-[vi] { color: #0077aa } /* Name.Variable.Instance */
c-[il] { color: #000000 } /* Literal.Number.Integer.Long */
</style>
 <body class="h-entry">
  <div class="head">
   <p data-fill-with="logo"></p>
   <h1 class="p-name no-ref" id="title">P2206R0<br>Executors Thread Pool review report</h1>
   <h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Published Proposal, <time class="dt-updated" datetime="2020-08-24">2020-08-24</time></span></h2>
   <div data-fill-with="spec-metadata">
    <dl>
     <dt>This version:
     <dd><a class="u-url" href="http://wg21.link/P2206R0">http://wg21.link/P2206R0</a>
     <dt>Authors:
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:ruslan.arutyunyan@intel.com">Ruslan Arutyunyan</a> (<span class="p-org org">Intel</span>)
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:ben.craig@gmail.com">Ben Craig</a> (<span class="p-org org">NI</span>)
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:guy.davidson@hatcat.com">Guy Davidson</a>
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:anuya.welling@intel.com">Anuya Welling</a> (<span class="p-org org">Intel</span>)
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:michaelj.voss@intel.com">Michael Voss</a> (<span class="p-org org">Intel</span>)
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:scogland1@llnl.gov">Tom Scogland</a>
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:chris@kohlhoff.com">Chris Kohlhoff</a>
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:gordon@codeplay.com">Gordon Brown</a> (<span class="p-org org">Codeplay</span>)
     <dd>
      <dd class="editor p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:lwh@fb.com">Lee Howes</a> (<span class="p-org org">Facebook</span>)
     <dt>Audience:
     <dd>LEWG
     <dt>Project:
     <dd>ISO/IEC JTC1/SC22/WG21 14882: Programming Language — C++
    </dl>
   </div>
   <div data-fill-with="warning"></div>
   <hr title="Separator for header">
  </div>
  <div class="p-summary" data-fill-with="abstract">
   <h2 class="no-num no-toc no-ref heading settled" id="abstract"><span class="content">Abstract</span></h2>
   <p>Authors collected the list of the issues as the result of <a data-link-type="biblio" href="#biblio-p0443r13">[P0443R13]</a> review with the main focus on "2.5 Thread Pools" section</p>
  </div>
  <nav data-fill-with="table-of-contents" id="toc">
   <h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>
   <ol class="toc" role="directory">
    <li>
     <a href="#issues"><span class="secno">1</span> <span class="content">Issues</span></a>
     <ol class="toc">
      <li><a href="#design_issues"><span class="secno">1.1</span> <span class="content">Design issues</span></a>
      <li><a href="#wording_issues"><span class="secno">1.2</span> <span class="content">Wording issues</span></a>
      <li><a href="#issue_references"><span class="secno">1.3</span> <span class="content">Issue references</span></a>
     </ol>
    <li>
     <a href="#references"><span class="secno"></span> <span class="content">References</span></a>
     <ol class="toc">
      <li><a href="#informative"><span class="secno"></span> <span class="content">Informative References</span></a>
     </ol>
   </ol>
  </nav>
  <main>
   <h2 class="heading settled" data-level="1" id="issues"><span class="secno">1. </span><span class="content">Issues</span><a class="self-link" href="#issues"></a></h2>
   <h3 class="heading settled" data-level="1.1" id="design_issues"><span class="secno">1.1. </span><span class="content">Design issues</span><a class="self-link" href="#design_issues"></a></h3>
   <ul>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9">
      <a class="self-link" href="#issue-d41d8cd9"></a><a class="marker" href="https://github.com/executors/executors/issues/526">Issue #526 on GitHub: “2.5.2.3 Add attach_and_wait() method”</a>
      <p>Add <code class="highlight"><c- n>attach_and_wait</c-></code> method to allow the thread to be attached to the <code class="highlight"><c- n>static_thread_pool</c-></code> and help with work while it's waiting for the completion</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①">
      <a class="self-link" href="#issue-d41d8cd9①"></a><a class="marker" href="https://github.com/executors/executors/issues/528">Issue #528 on GitHub: “Consider adding the method that indicates that static_thread_pool is stopped”</a>
      <p>Consider adding the method that indicates that <code class="highlight"><c- n>static_thread_pool</c-></code> is stopped meaning that it doesn't accept new work.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②">
      <a class="self-link" href="#issue-d41d8cd9②"></a><a class="marker" href="https://github.com/executors/executors/issues/529">Issue #529 on GitHub: “Scheduler of static_thread_pool should have the same set of properties as sender does”</a>
      <p>Changes required in "2.5.2.4", "2.5.3" and "2.5.3.3"</p>
      <p>If that issue is applied need to explicitly say that <code class="highlight"><c- n>sender</c-></code> returned by the <code class="highlight"><c- n>scheduler</c-></code> has the same values of properties <em>established</em> as the <code class="highlight"><c- n>scheduler</c-></code> itself</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③">
      <a class="self-link" href="#issue-d41d8cd9③"></a><a class="marker" href="https://github.com/executors/executors/issues/530">Issue #530 on GitHub: “State the relation between the scheduler_type and executor_type”</a>
      <p>Three options raised during the review:</p>
      <ul>
       <li>Always the same type
       <li>Can be same type
       <li>Never same type
      </ul>
      <p>Potential implications: constrained overload choosing. One overload is constrained by <code class="highlight"><c- n>scheduler</c-></code> concept and another one by <code class="highlight"><c- n>executor</c-></code> concept. If the types are the same it is always ambiguity. It can be potentially solved by introducing the different types.</p>
      <p>Possibly there are other implications, deeper investigation is needed.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9④">
      <a class="self-link" href="#issue-d41d8cd9④"></a><a class="marker" href="https://github.com/executors/executors/issues/535">Issue #535 on GitHub: “Consider adding is_always_equal trait for executors/schedulers/senders”</a>
      <p>Consider adding mentioned trait similar to the one that the allocators have to identify if schedulers/executors/senders are always equal at compile-time</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9⑤">
      <a class="self-link" href="#issue-d41d8cd9⑤"></a><a class="marker" href="https://github.com/executors/executors/issues/538">Issue #538 on GitHub: “2.2.8. requires(E &amp;&amp;e) should be requires(const E &amp;e)”</a>
      <p>Please also check how it affects other parts of the paper. Probably 2.5.2.4 should be updated as well.</p>
      <p>In 2.2.8. there is a typo as well. <strong>S</strong> should be used instead of <strong>E</strong>. So, at the end it should look like <code class="highlight"><c- k>const</c-> <c- n>S</c-><c- o>&amp;</c-></code> within <code class="highlight"><c- k>requires</c-><c- o>-</c-><c- n>expression</c-></code></p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9⑥">
      <a class="self-link" href="#issue-d41d8cd9⑥"></a><a class="marker" href="https://github.com/executors/executors/issues/539">Issue #539 on GitHub: “Consider whether to add a submit member function to the static_thread_pool sender type.”</a>
      <p>Adding submit member function to <code class="highlight"><c- n>static_thread_pool</c-></code> sender type allows implementations to customize the behavior according to their needs, rather then relying on the default behavior of <code class="highlight"><c- n>std</c-><c- o>::</c-><c- n>execution</c-><c- o>::</c-><c- n>submit</c-></code>.</p>
      <p>For example implementation of <code class="highlight"><c- n>static_thread_pool</c-></code> may want to customize how <code class="highlight"><c- n>sender</c-></code> works with <em>Allocator</em></p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9⑦">
      <a class="self-link" href="#issue-d41d8cd9⑦"></a><a class="marker" href="https://github.com/executors/executors/issues/540">Issue #540 on GitHub: “Investigate the necessity of operator== for static_thread_pool senders and for senders in general”</a>
      <p>Probably the senders can be <em>EquallyComparable</em> optionally. If it's the case the senders could probably have special meaning as for the allocators. One of the options: "If senders are <em>EquallyComparable</em> and <code class="highlight"><c- k>operator</c-><c- o>==</c-></code> returns <code class="highlight">true</code> it means that they are <em>interchangeable</em>"</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9⑧">
      <a class="self-link" href="#issue-d41d8cd9⑧"></a><a class="marker" href="https://github.com/executors/executors/issues/542">Issue #542 on GitHub: “Consider third option for outstanding_work_t property”</a>
      <p>Please investigate if it worth to have the third option for <code class="highlight"><c- n>outstanding_work_t</c-></code> (like <code class="highlight"><c- n>outstanding</c-> <c- n>work</c-><c- p>.</c-><c- n>possibly</c-></code> or <code class="highlight"><c- n>outstanding_work</c-><c- p>.</c-><c- n>unknown</c-></code>)</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9⑨">
      <a class="self-link" href="#issue-d41d8cd9⑨"></a><a class="marker" href="https://github.com/executors/executors/issues/543">Issue #543 on GitHub: “Investigate the right default for outstanding_work_t property”</a>
      <p>Please take into account <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/542/hovercard" data-id="684044962" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/542" href="https://github.com/executors/executors/issues/542">#542</a></p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⓪">
      <a class="self-link" href="#issue-d41d8cd9①⓪"></a><a class="marker" href="https://github.com/executors/executors/issues/544">Issue #544 on GitHub: “Consider the third option for relationship_t property”</a>
      <p>Please investigate if it worth to have the third option for <code class="highlight"><c- n>relationship_t</c-></code> (like <code class="highlight"><c- n>relationship</c-><c- p>.</c-><c- n>unknown</c-></code>)</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①①">
      <a class="self-link" href="#issue-d41d8cd9①①"></a><a class="marker" href="https://github.com/executors/executors/issues/545">Issue #545 on GitHub: “Investigate the right default for relationship_t property”</a>
      <p>Please take into account <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/544/hovercard" data-id="684045669" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/544" href="https://github.com/executors/executors/issues/544">#544</a></p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①②">
      <a class="self-link" href="#issue-d41d8cd9①②"></a><a class="marker" href="https://github.com/executors/executors/issues/552">Issue #552 on GitHub: “Investigate whether vendors can add their own properties via free functions but not member functions.”</a>
      <p>Sub-question: clarify whether implementations are allowed to provide additional overloads of <code class="highlight"><c- n>require</c-></code>.</p>
      <p>If adding user overloads is allowed consider whether vendor properties must always result in a new executor/scheduler type.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①③">
      <a class="self-link" href="#issue-d41d8cd9①③"></a><a class="marker" href="https://github.com/executors/executors/issues/554">Issue #554 on GitHub: “Investigate the possibility to simplify allocator_t property”</a>
      <p>Please investigate if overloads with <code class="highlight"><c- n>ProtoAllocator</c-></code> can be changed somehow to <code class="highlight"><c- n>query</c-></code>/<code class="highlight"><c- n>require</c-></code> both user set up allocator or default one</p>
      <p>If the first suggestion would be applied overloads with <code class="highlight"><c- n>allocator_t</c-><c- o>&lt;</c-><c- b>void</c-><c- o>></c-></code> seem unnecessary</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①④">
      <a class="self-link" href="#issue-d41d8cd9①④"></a><a class="marker" href="https://github.com/executors/executors/issues/555">Issue #555 on GitHub: “Describe when and how submit/execute/other similar methods use allocator”</a>
      <p>Possible option to go is to use the same approach as <em>Container</em> requirements do.</p>
      <p>Larger question:</p>
      <ul>
       <li>Are implementations of <code class="highlight"><c- n>static_thread_pool</c-></code> allowed to do not allocate any memory at all under implementation-defined conditions (e.g. a thread pool could use a preallocated circular buffer that is "common" rather than "per function", and only touch the allocator if it runs out of space.)?
       <li>If the <code class="highlight"><c- n>static_thread_pool</c-></code> does need to allocate some per-function state that is not available , is implementation required to use the specified allocator?
      </ul>
      <p>Note: implementations may want to provide a submit member function for senders to avoid the heap allocation.</p>
     </div>
   </ul>
   <h3 class="heading settled" data-level="1.2" id="wording_issues"><span class="secno">1.2. </span><span class="content">Wording issues</span><a class="self-link" href="#wording_issues"></a></h3>
   <ul>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⑤">
      <a class="self-link" href="#issue-d41d8cd9①⑤"></a><a class="marker" href="https://github.com/executors/executors/issues/521">Issue #521 on GitHub: “2.5.2.3 Worker management. Make attach look like the code and add parentheses”</a>
      <p>In <code class="highlight"><c- n>stop</c-><c- p>()</c-></code> method description in the following sentence the attach mentioning should be fixed. "Subsequent invocations to <strong>attach</strong> complete immediately."</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⑥">
      <a class="self-link" href="#issue-d41d8cd9①⑥"></a><a class="marker" href="https://github.com/executors/executors/issues/522">Issue #522 on GitHub: “Define better term instead of function objects (work-item, task, etc.)”</a>
      <p>Paper uses <code class="highlight"><c- n>function</c-> <c- n>objects</c-></code> in several places in the static thread pool wording. Need to define a term (like work item or task) instead of function object.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⑦">
      <a class="self-link" href="#issue-d41d8cd9①⑦"></a><a class="marker" href="https://github.com/executors/executors/issues/523">Issue #523 on GitHub: “Consider better name for static_thread_pool”</a>
      <p><code class="highlight"><c- n>static_thread_pool</c-></code> seems a bit off, since the size is sort of dynamic.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⑧">
      <a class="self-link" href="#issue-d41d8cd9①⑧"></a><a class="marker" href="https://github.com/executors/executors/issues/524">Issue #524 on GitHub: “Investigate why the wording has been changed and identify the right one”</a>
      <p>commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/executors/executors/commit/9a88bfce71a0ca28cd918693535f4c033edcadf1/hovercard" href="https://github.com/executors/executors/commit/9a88bfce71a0ca28cd918693535f4c033edcadf1"><tt>9a88bfc</tt></a></p>
      <p>Before:</p>
      <blockquote>
       <p>-A <code class="highlight"><c- n>static_thread_pool</c-></code>'s threads execute execution agents created via its associated executors with forward progress guarantee delegation. [<em>Note:</em> Forward progress is delegated to an execution agent for its lifetime. Because <code class="highlight"><c- n>static_thread_pool</c-></code> guarantees only parallel forward progress to execution agents created via its executors, forward progress delegation does not apply to execution agents which have not yet started executing their first execution step. <em>--end note</em>]</p>
      </blockquote>
      <p>After:</p>
      <blockquote>
       <p>+A <code class="highlight"><c- n>static_thread_pool</c-></code>'s threads run execution agents with forward progress guarantee delegation. [<em>Note:</em> Forward progress is delegated to an execution agent for its lifetime. Because <code class="highlight"><c- n>static_thread_pool</c-></code> guarantees only parallel forward progress to running execution agents; <em>i.e.</em>, execution agents which have run the first step of the function object. <em>--end note</em>]</p>
      </blockquote>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9①⑨">
      <a class="self-link" href="#issue-d41d8cd9①⑨"></a><a class="marker" href="https://github.com/executors/executors/issues/525">Issue #525 on GitHub: “Provide and example for untracked executor with no more work expected”</a>
      <p>Provide an example where a work-item scheduled by an untracked executor can indicate that no more work is expected.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⓪">
      <a class="self-link" href="#issue-d41d8cd9②⓪"></a><a class="marker" href="https://github.com/executors/executors/issues/527">Issue #527 on GitHub: “Add wording how 2.5.2.3 "Worker management" functions interact with each other”</a>
      <p>Add wording how 2.5.2.3 "Worker management" functions interact with each other and what are implications to other <code class="highlight"><c- n>static_thread_pool</c-></code> methods. Take into account concurrent use-cases.</p>
      <p>Example 1: What would happen if after <code class="highlight"><c- n>wait</c-><c- p>()</c-></code> function returns user calls <code class="highlight"><c- n>executor</c-><c- p>().</c-><c- n>execute</c-><c- p>()</c-></code> methods on the static_thread_pool` object?</p>
      <p>Example 2: If some thread calls <code class="highlight"><c- n>wait</c-><c- p>()</c-></code> and another thread calls <code class="highlight"><c- n>stop</c-><c- p>()</c-></code> that would discard the work in the thread pool</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②①">
      <a class="self-link" href="#issue-d41d8cd9②①"></a><a class="marker" href="https://github.com/executors/executors/issues/531">Issue #531 on GitHub: “Change descriptive type C to something more specific”</a>
      <p>Probably introduce the <em>Exposition Only</em> type to have better experience with reading the paper</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②②"><a class="self-link" href="#issue-d41d8cd9②②"></a><a class="marker" href="https://github.com/executors/executors/issues/532">Issue #532 on GitHub: “Remove oneway property mentioning from everywhere”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②③">
      <a class="self-link" href="#issue-d41d8cd9②③"></a><a class="marker" href="https://github.com/executors/executors/issues/533">Issue #533 on GitHub: “2.5.3 Schedule() method should be in the synopsis”</a>
      <p>The similar modifications should be done for "Executor Types" and "Sender types" sections.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②④">
      <a class="self-link" href="#issue-d41d8cd9②④"></a><a class="marker" href="https://github.com/executors/executors/issues/534">Issue #534 on GitHub: “Explore is operator!= should be explicitly listed”</a>
      <p>Since C++20 user has <code class="highlight"><c- k>operator</c-><c- o>!=</c-></code> for free if <code class="highlight"><c- k>operator</c-><c- o>==</c-></code> is explicitly defined.</p>
      <p>Request for the exploration is relevant to the whole paper where both <code class="highlight"><c- k>operator</c-><c- o>==</c-></code> and <code class="highlight"><c- k>operator</c-><c- o>!=</c-></code> are defined</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⑤">
      <a class="self-link" href="#issue-d41d8cd9②⑤"></a><a class="marker" href="https://github.com/executors/executors/issues/536">Issue #536 on GitHub: “Remove 2.5.3.5”</a>
      <p>Related issue: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/533/hovercard" data-id="683567485" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/533" href="https://github.com/executors/executors/issues/533">#533</a></p>
      <p>The similar modifications should be done for "Executor Types" and "Sender types" sections.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⑥"><a class="self-link" href="#issue-d41d8cd9②⑥"></a><a class="marker" href="https://github.com/executors/executors/issues/537">Issue #537 on GitHub: “Consider alternative name instead of schedule()”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⑦"><a class="self-link" href="#issue-d41d8cd9②⑦"></a><a class="marker" href="https://github.com/executors/executors/issues/541">Issue #541 on GitHub: “Make sure that P0443 clearly states that receiver functions cannot be called until start is called”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⑧">
      <a class="self-link" href="#issue-d41d8cd9②⑧"></a><a class="marker" href="https://github.com/executors/executors/issues/546">Issue #546 on GitHub: “Provide stronger guarantees on outstanding_work.untracked”</a>
      <p>Depends on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/542/hovercard" data-id="684044962" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/542" href="https://github.com/executors/executors/issues/542">#542</a>. If the <code class="highlight"><c- n>outstanding_work</c-><c- p>.</c-><c- n>possibly</c-></code> (or something) is accepted then need to make sure that <code class="highlight"><c- n>outstanding_work</c-><c- p>.</c-><c- n>unknown</c-></code> provides strong enough guarantees about deadlock.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9②⑨"><a class="self-link" href="#issue-d41d8cd9②⑨"></a><a class="marker" href="https://github.com/executors/executors/issues/547">Issue #547 on GitHub: “Consider alternative naming for relationship_t property and nested properties for that”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③⓪"><a class="self-link" href="#issue-d41d8cd9③⓪"></a><a class="marker" href="https://github.com/executors/executors/issues/548">Issue #548 on GitHub: “Consider alternative naming for outstanding_work_t property and nested properties for that”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③①"><a class="self-link" href="#issue-d41d8cd9③①"></a><a class="marker" href="https://github.com/executors/executors/issues/549">Issue #549 on GitHub: “Make sure P0443 does not refer to concept changing properties anymore”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③②">
      <a class="self-link" href="#issue-d41d8cd9③②"></a><a class="marker" href="https://github.com/executors/executors/issues/550">Issue #550 on GitHub: “Introduce the "Properties" term of art in P1393”</a>
      <p>Consider adding <em>established property</em> term into P1393 and have the reference to that in P0443.</p>
      <p>Related issue: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/506/hovercard" data-id="672996536" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/506" href="https://github.com/executors/executors/issues/506">#506</a>.</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③③">
      <a class="self-link" href="#issue-d41d8cd9③③"></a><a class="marker" href="https://github.com/executors/executors/issues/551">Issue #551 on GitHub: “Introduce the "behavioral properties" term of art”</a>
      <p>Identify if it should be added into P0443 or into P1393.</p>
      <p>Current suggestion is to add it into P0443 because only executors introduce such model with nested properties. Probably add note that it may become the wider term and potentially may be added to P1393</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③④">
      <a class="self-link" href="#issue-d41d8cd9③④"></a><a class="marker" href="https://github.com/executors/executors/issues/553">Issue #553 on GitHub: “Consider consolidation of schedulers/senders type requirements on the P0443 level”</a>
      <p>If <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-hovercard-type="issue" data-hovercard-url="/executors/executors/issues/529/hovercard" data-id="683551753" data-permission-text="Title is private" data-url="https://github.com/executors/executors/issues/529" href="https://github.com/executors/executors/issues/529">#529</a> is applied please find the way to consolidate schedulers/senders type requirements on the P0443 level</p>
      <p>Something like: "The X,Y,Z classes conform to the following specification..."</p>
      <p>Possible option to go is to use the same approach as <em>Container</em> requirements do</p>
     </div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③⑤"><a class="self-link" href="#issue-d41d8cd9③⑤"></a><a class="marker" href="https://github.com/executors/executors/issues/556">Issue #556 on GitHub: “Make sure the exception_ptr is the the error type for the static_thread_pool sender”</a></div>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③⑥">
      <a class="self-link" href="#issue-d41d8cd9③⑥"></a><a class="marker" href="https://github.com/executors/executors/issues/557">Issue #557 on GitHub: “Consider having the description of behavioral properties in one place use references to that”</a>
      <p>Example: "<em>Returns</em>: An sender object of an unspecified type conforming to these specifications, associated with the same thread pool as <code class="highlight"><c- o>*</c-><c- k>this</c-></code>, and having the requested property established. When the requested property is part of a group that is defined as a mutually exclusive set, any other properties in the group are removed from the returned sender object. All other properties of the returned sender object are identical to those of <code class="highlight"><c- o>*</c-><c- k>this</c-></code>."</p>
      <p>It seems like the description of the <em>behavioral properties</em> mostly. It can be described in one place and then references to it can be used to do not duplicate the information</p>
     </div>
   </ul>
   <h3 class="heading settled" data-level="1.3" id="issue_references"><span class="secno">1.3. </span><span class="content">Issue references</span><a class="self-link" href="#issue_references"></a></h3>
   <ul>
    <li data-md>
     <div class="issue no-marker" id="issue-d41d8cd9③⑦">
      <a class="self-link" href="#issue-d41d8cd9③⑦"></a><a class="marker" href="https://github.com/executors/executors/issues/506">Issue #506 on GitHub: “What does "established property" mean?”</a>
      <p>From the Executors Property review group: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2183r0.html#established" rel="nofollow">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2183r0.html#established</a></p>
      <p>Many places in the paper use the phrase "property already established" or something similar. But there is no precise definition of what "established" means. The paper should provide a definition, so that implementations (and users who write their own executor types) have a better understanding of what to implement.</p>
      <p>(See the link for more discussion.)</p>
     </div>
   </ul>
  </main>
<script>
(function() {
  "use strict";
  var collapseSidebarText = '<span aria-hidden="true">←</span> '
                          + '<span>Collapse Sidebar</span>';
  var expandSidebarText   = '<span aria-hidden="true">→</span> '
                          + '<span>Pop Out Sidebar</span>';
  var tocJumpText         = '<span aria-hidden="true">↑</span> '
                          + '<span>Jump to Table of Contents</span>';

  var sidebarMedia = window.matchMedia('screen and (min-width: 78em)');
  var autoToggle   = function(e){ toggleSidebar(e.matches) };
  if(sidebarMedia.addListener) {
    sidebarMedia.addListener(autoToggle);
  }

  function toggleSidebar(on) {
    if (on == undefined) {
      on = !document.body.classList.contains('toc-sidebar');
    }

    /* Don’t scroll to compensate for the ToC if we’re above it already. */
    var headY = 0;
    var head = document.querySelector('.head');
    if (head) {
      // terrible approx of "top of ToC"
      headY += head.offsetTop + head.offsetHeight;
    }
    var skipScroll = window.scrollY < headY;

    var toggle = document.getElementById('toc-toggle');
    var tocNav = document.getElementById('toc');
    if (on) {
      var tocHeight = tocNav.offsetHeight;
      document.body.classList.add('toc-sidebar');
      document.body.classList.remove('toc-inline');
      toggle.innerHTML = collapseSidebarText;
      if (!skipScroll) {
        window.scrollBy(0, 0 - tocHeight);
      }
      tocNav.focus();
      sidebarMedia.addListener(autoToggle); // auto-collapse when out of room
    }
    else {
      document.body.classList.add('toc-inline');
      document.body.classList.remove('toc-sidebar');
      toggle.innerHTML = expandSidebarText;
      if (!skipScroll) {
        window.scrollBy(0, tocNav.offsetHeight);
      }
      if (toggle.matches(':hover')) {
        /* Unfocus button when not using keyboard navigation,
           because I don’t know where else to send the focus. */
        toggle.blur();
      }
    }
  }

  function createSidebarToggle() {
    /* Create the sidebar toggle in JS; it shouldn’t exist when JS is off. */
    var toggle = document.createElement('a');
      /* This should probably be a button, but appearance isn’t standards-track.*/
    toggle.id = 'toc-toggle';
    toggle.class = 'toc-toggle';
    toggle.href = '#toc';
    toggle.innerHTML = collapseSidebarText;

    sidebarMedia.addListener(autoToggle);
    var toggler = function(e) {
      e.preventDefault();
      sidebarMedia.removeListener(autoToggle); // persist explicit off states
      toggleSidebar();
      return false;
    }
    toggle.addEventListener('click', toggler, false);


    /* Get <nav id=toc-nav>, or make it if we don’t have one. */
    var tocNav = document.getElementById('toc-nav');
    if (!tocNav) {
      tocNav = document.createElement('p');
      tocNav.id = 'toc-nav';
      /* Prepend for better keyboard navigation */
      document.body.insertBefore(tocNav, document.body.firstChild);
    }
    /* While we’re at it, make sure we have a Jump to Toc link. */
    var tocJump = document.getElementById('toc-jump');
    if (!tocJump) {
      tocJump = document.createElement('a');
      tocJump.id = 'toc-jump';
      tocJump.href = '#toc';
      tocJump.innerHTML = tocJumpText;
      tocNav.appendChild(tocJump);
    }

    tocNav.appendChild(toggle);
  }

  var toc = document.getElementById('toc');
  if (toc) {
    createSidebarToggle();
    toggleSidebar(sidebarMedia.matches);

    /* If the sidebar has been manually opened and is currently overlaying the text
       (window too small for the MQ to add the margin to body),
       then auto-close the sidebar once you click on something in there. */
    toc.addEventListener('click', function(e) {
      if(e.target.tagName.toLowerCase() == "a" && document.body.classList.contains('toc-sidebar') && !sidebarMedia.matches) {
        toggleSidebar(false);
      }
    }, false);
  }
  else {
    console.warn("Can’t find Table of Contents. Please use <nav id='toc'> around the ToC.");
  }

  /* Wrap tables in case they overflow */
  var tables = document.querySelectorAll(':not(.overlarge) > table.data, :not(.overlarge) > table.index');
  var numTables = tables.length;
  for (var i = 0; i < numTables; i++) {
    var table = tables[i];
    var wrapper = document.createElement('div');
    wrapper.className = 'overlarge';
    table.parentNode.insertBefore(wrapper, table);
    wrapper.appendChild(table);
  }

})();
</script>
  <h2 class="no-num no-ref heading settled" id="references"><span class="content">References</span><a class="self-link" href="#references"></a></h2>
  <h3 class="no-num no-ref heading settled" id="informative"><span class="content">Informative References</span><a class="self-link" href="#informative"></a></h3>
  <dl>
   <dt id="biblio-p0443r13">[P0443R13]
   <dd>Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, D. S. Hollman, Lee Howes, Kirk Shoop, Lewis Baker, Eric Niebler. <a href="https://wg21.link/p0443r13">A Unified Executors Proposal for C++</a>. 2 March 2020. URL: <a href="https://wg21.link/p0443r13">https://wg21.link/p0443r13</a>
  </dl>