Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Introduce feature test macro.
Promote incorrectly orgnized subsection 1.3.1 to 1.4.
  • Loading branch information
jaredhoberock committed May 7, 2015
commit 4dd99e6d2a8b716997ec8deffd6324627c0f05f0
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@

# Parallelism TS Editor's Report, Lenexa meeting

D4505 is the latest Parallelism TS Working Draft. It contains editorial changes to the Parallelism TS to apply the following revisions:
D4505 is the latest Parallelism TS Working Draft. It contains editorial and technical changes to the Parallelism TS to apply the following revisions:

* N4274 - Relaxing Packing Rules for Exceptions Thrown by Parallel Algorithms - Proposed Wording (Revision 1)
* D???? - Feature Test Macros for the Parallelism TS
* Feature test macro for the Parallelism TS

D4505 updates the previous draft, N4407, published in the pre-Lenexa mailing.

Expand All @@ -22,9 +22,9 @@ N4507 is document N4505 reformatted as a TS document. It updates N4409, which wa

* Applied N4274, which relaxes the exception packaging rules for exceptions thrown by parallel algorithms. Additionally, changed instances of "terminates with (exception)" phrasing to "exits via (exception)", as directed by the Library Working Group.

* Applied D????, which introduces feature test macros for the functionality of the Parallelism TS.
* Introduced the feature test macro `__cpp_lib_experimental_parallel_algorithm` for the functionality of the Parallelism TS as directed by SG1.

## Editorial Changes

None.
* Promoted subsection 1.3.1, which was incorrectly grouped under section 1.3, to section 1.4.

106 changes: 68 additions & 38 deletions general.html
Original file line number Diff line number Diff line change
Expand Up @@ -70,59 +70,89 @@ <h1>Namespaces and headers</h1>
<pre>
<code> #include &lt;meow&gt;</code>
</pre>
</cxx-section>

<cxx-section id="parallel.general.defns">
<h1>Terms and definitions</h1>
<cxx-section id="parallel.general.defns">
<h1>Terms and definitions</h1>

<p>For the purposes of this document, the terms and definitions given in the C++ Standard and the following apply.</p>

<p>A <dfn>parallel algorithm</dfn> is a function template described by this Technical Specification declared in namespace <code>std::experimental::parallel::v1</code> with a formal template parameter named <code>ExecutionPolicy</code>.</p>

<p>For the purposes of this document, the terms and definitions given in the C++ Standard and the following apply.</p>
<p>
Parallel algorithms access objects indirectly accessible via their arguments by invoking the following functions:

<p>A <dfn>parallel algorithm</dfn> is a function template described by this Technical Specification declared in namespace <code>std::experimental::parallel::v1</code> with a formal template parameter named <code>ExecutionPolicy</code>.</p>
<ul>
<li>
All operations of the categories of the iterators that the algorithm is instantiated with.
</li>

<p>
Parallel algorithms access objects indirectly accessible via their arguments by invoking the following functions:
<li>
Functions on those sequence elements that are required by its specification.
</li>

<li>
User-provided function objects to be applied during the execution of the algorithm, if required by the specification.
</li>

<ins><li>
Operations on those function objects required by the specification.

<cxx-note>
See clause 25.1 of <em>C++ Standard Algorithms Library</em>.
</cxx-note>
</li></ins>
</ul>

These functions are herein called <em>element access functions</em>.

<cxx-example>
The <code>sort</code> function may invoke the following element access functions:

<ul>
<li>
All operations of the categories of the iterators that the algorithm is instantiated with.
Methods of the random-access iterator of the actual template argument, as per 24.2.7, as implied by the name of the
template parameters <code>RandomAccessIterator</code>.
</li>

<li>
Functions on those sequence elements that are required by its specification.
The <code>swap</code> function on the elements of the sequence (as per 25.4.1.1 [sort]/2).
</li>

<li>
User-provided function objects to be applied during the execution of the algorithm, if required by the specification.
The user-provided <code>Compare</code> function object.
</li>
</ul>
</cxx-example>
</cxx-section>

<ins><li>
Operations on those function objects required by the specification.
<cxx-section id="parallel.general.features">
<ins>
<h1>Feature-testing recommendations</h1>
<p>An implementation that provides support for this Technical Specification shall define the feature test macro(s) in Table 1.</p>

<cxx-note>
See clause 25.1 of <em>C++ Standard Algorithms Library</em>.
</cxx-note>
</li></ins>
</ul>

These functions are herein called <em>element access functions</em>.

<cxx-example>
The <code>sort</code> function may invoke the following element access functions:

<ul>
<li>
Methods of the random-access iterator of the actual template argument, as per 24.2.7, as implied by the name of the
template parameters <code>RandomAccessIterator</code>.
</li>

<li>
The <code>swap</code> function on the elements of the sequence (as per 25.4.1.1 [sort]/2).
</li>

<li>
The user-provided <code>Compare</code> function object.
</li>
</ul>
</cxx-example>
</cxx-section>
<table is="cxx-table" class="column-rules">
<caption>Feature Test Macro(s)</caption>

<thead>
<tr>
<th>Name</th>
<th>Value</th>
<th>Header</th>
</tr>
<tr>
<td><code>__cpp_lib_experimental_parallel_algorithm</code></td>
<td>201505</td>
<td>
<code>&lt;experimental/algorithm&gt;</code><br>
<code>&lt;experimental/exception_list&gt;</code><br>
<code>&lt;experimental/execution_policy&gt;</code><br>
<code>&lt;experimental/numeric&gt;</code>
</td>
</tr>
</thead>
</table>
</ins>
</cxx-section>
</cxx-clause>

138 changes: 89 additions & 49 deletions parallelism-ts.html
Original file line number Diff line number Diff line change
Expand Up @@ -761,13 +761,13 @@ <h1>Contents</h1>

<li><span class="marker">1.3</span><a href="#parallel.general.namespaces">Namespaces and headers</a>

<ol>
</li>

<li><span class="marker">1.3.1</span><a href="#parallel.general.defns">Terms and definitions</a>
<li><span class="marker">1.4</span><a href="#parallel.general.defns">Terms and definitions</a>

</li>

</ol>
<li><span class="marker">1.5</span><a href="#parallel.general.features">Feature-testing recommendations</a>

</li>

Expand Down Expand Up @@ -1034,80 +1034,120 @@ <h1>Contents</h1>

<pre><code> #include &lt;meow&gt;</code>
</pre>

</section>
</cxx-section>

<cxx-section id="parallel.general.defns">
<cxx-section id="parallel.general.defns">


<section>
<header><span class="section-number">1.3.1</span> <h1 data-bookmark-label="1.3.1 Terms and definitions">Terms and definitions</h1> <span style="float:right"><a href="#parallel.general.defns">[parallel.general.defns]</a></span></header>

<header><span class="section-number">1.4</span> <h1 data-bookmark-label="1.4 Terms and definitions">Terms and definitions</h1> <span style="float:right"><a href="#parallel.general.defns">[parallel.general.defns]</a></span></header>



<p para_num="1" id="parallel.general.defns.1">For the purposes of this document, the terms and definitions given in the C++ Standard and the following apply.</p>
<p para_num="1" id="parallel.general.defns.1">For the purposes of this document, the terms and definitions given in the C++ Standard and the following apply.</p>

<p para_num="2" id="parallel.general.defns.2">A <dfn>parallel algorithm</dfn> is a function template described by this Technical Specification declared in namespace <code>std::experimental::parallel::v1</code> with a formal template parameter named <code>ExecutionPolicy</code>.</p>
<p para_num="2" id="parallel.general.defns.2">A <dfn>parallel algorithm</dfn> is a function template described by this Technical Specification declared in namespace <code>std::experimental::parallel::v1</code> with a formal template parameter named <code>ExecutionPolicy</code>.</p>

<p para_num="3" id="parallel.general.defns.3">
Parallel algorithms access objects indirectly accessible via their arguments by invoking the following functions:
<p para_num="3" id="parallel.general.defns.3">
Parallel algorithms access objects indirectly accessible via their arguments by invoking the following functions:

</p><ul>
<li>
All operations of the categories of the iterators that the algorithm is instantiated with.
</li>
</p><ul>
<li>
All operations of the categories of the iterators that the algorithm is instantiated with.
</li>

<li>
Functions on those sequence elements that are required by its specification.
</li>
<li>
Functions on those sequence elements that are required by its specification.
</li>

<li>
User-provided function objects to be applied during the
execution of the algorithm, if required by the specification.
</li>
<li>
User-provided function objects to be applied during the execution of the algorithm, if required by the specification.
</li>

<ins><li>
Operations on those function objects required by the specification.
<ins><li>
Operations on those function objects required by the specification.

<cxx-note><span class="nowrap">[ <em>Note:</em></span>
<cxx-note><span class="nowrap">[ <em>Note:</em></span>

See clause 25.1 of <em>C++ Standard Algorithms Library</em>.
See clause 25.1 of <em>C++ Standard Algorithms Library</em>.

<span class="nowrap">— <em>end note</em> ]</span>
</cxx-note>
</li></ins>
</ul>
</li></ins>
</ul>

These functions are herein called <em>element access functions</em>.
These functions are herein called <em>element access functions</em>.

<cxx-example>
<cxx-example>

<span class="nowrap">[ <em>Example:</em></span>

The <code>sort</code> function may invoke the following element access functions:
The <code>sort</code> function may invoke the following element access functions:

<ul>
<li>
Methods of the random-access iterator of the actual
template argument, as per 24.2.7, as implied by the name of the
template parameters <code>RandomAccessIterator</code>.
</li>
<ul>
<li>
Methods of the random-access iterator of the actual template argument, as per 24.2.7, as implied by the name of the
template parameters <code>RandomAccessIterator</code>.
</li>

<li>
The <code>swap</code> function on the elements of the sequence (as per 25.4.1.1 [sort]/2).
</li>
<li>
The <code>swap</code> function on the elements of the sequence (as per 25.4.1.1 [sort]/2).
</li>

<li>
The user-provided <code>Compare</code> function object.
</li>
</ul>
<li>
The user-provided <code>Compare</code> function object.
</li>
</ul>

<span class="nowrap">— <em>end example</em> ]</span>
</cxx-example>

</section>
</cxx-section>

<cxx-section id="parallel.general.features">


<section>
<header><span class="section-number">1.5</span> <span style="float:right"><a href="#parallel.general.features">[parallel.general.features]</a></span></header>

<ins>
<h1>Feature-testing recommendations</h1>
<p>An implementation that provides support for this Technical Specification shall define the feature test macro(s) in table 1.</p>

<table is="cxx-table" class="column-rules">


<caption>Table 1 — <wbr><span>Feature Test Macro(s)</span></caption>



<thead>
<tr>
<th>Name</th>
<th>Value</th>
<th>Header</th>
</tr>
<tr>
<td><code>__cpp_lib_experimental_parallel_algorithm</code></td>
<td>201505</td>
<td>
<code>&lt;experimental/algorithm&gt;</code><br>
<code>&lt;experimental/exception_list&gt;</code><br>
<code>&lt;experimental/execution_policy&gt;</code><br>
<code>&lt;experimental/numeric&gt;</code>
</td>
</tr>
</thead>

</table>
</ins>

</section>
</cxx-section>

</section>
</cxx-clause>

Expand Down Expand Up @@ -1911,7 +1951,7 @@ <h1>Contents</h1>
The Parallel Algorithms Library provides overloads for each of the algorithms named in
Table 1, corresponding to the algorithms with the same name in the C++ Standard Algorithms Library.

For each algorithm in <cxx-ref to="tab.parallel.algorithms"><a title="tab.parallel.algorithms" href="#tab.parallel.algorithms">Table 1</a></cxx-ref>, if there are overloads for
For each algorithm in <cxx-ref to="tab.parallel.algorithms"><a title="tab.parallel.algorithms" href="#tab.parallel.algorithms">Table 2</a></cxx-ref>, if there are overloads for
corresponding algorithms with the same name
in the C++ Standard Algorithms Library,
the overloads shall have an additional template type parameter named
Expand All @@ -1934,7 +1974,7 @@ <h1>Contents</h1>
<table role="presentation" is="cxx-table" id="tab.parallel.algorithms" class="list">


<caption>Table 1 — <wbr><span>Table of parallel algorithms</span></caption>
<caption>Table 2 — <wbr><span>Table of parallel algorithms</span></caption>


<tbody><tr>
Expand Down Expand Up @@ -2062,7 +2102,7 @@ <h1>Contents</h1>

<cxx-note><span class="nowrap">[ <em>Note:</em></span>

Not all algorithms in the Standard Library have counterparts in <cxx-ref to="tab.parallel.algorithms"><a title="tab.parallel.algorithms" href="#tab.parallel.algorithms">Table 1</a></cxx-ref>.
Not all algorithms in the Standard Library have counterparts in <cxx-ref to="tab.parallel.algorithms"><a title="tab.parallel.algorithms" href="#tab.parallel.algorithms">Table 2</a></cxx-ref>.

<span class="nowrap">— <em>end note</em> ]</span>
</cxx-note>
Expand Down
Binary file modified parallelism-ts.pdf
Binary file not shown.