<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Conformance and Extension</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../thread.html" title="Chapter 28. Thread 3.0.1">
+<link rel="up" href="../thread.html" title="Chapter 30. Thread 4.4.0">
<link rel="prev" href="acknowledgements.html" title="Acknowledgments">
-<link rel="next" href="../boost_tr1.html" title="Chapter 29. Boost.TR1">
+<link rel="next" href="../boost_tr1.html" title="Chapter 31. Boost.TR1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="thread.compliance"></a><a class="link" href="compliance.html" title="Conformance and Extension">Conformance and Extension</a>
</h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="compliance.html#thread.compliance.cpp11">C++11 standard Thread library</a></span></dt>
-<dt><span class="section"><a href="compliance.html#thread.compliance.shared">Shared Locking extensions</a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx14">C++14 standard Thread library
+ - accepted changes</a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y">C++14 TS Extensions for Concurrency
+ V1 </a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y0">C++1z TS Concurrency - On going
+ proposals</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="thread.compliance.cpp11"></a><a class="link" href="compliance.html#thread.compliance.cpp11" title="C++11 standard Thread library">C++11 standard Thread library</a>
</h3></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.html" target="_top">C++11
+ - Standard for Programming Language C++</a>
+ </p></td></tr>
+</table></div>
+<p>
+ ]
+ </p>
<div class="table">
-<a name="thread.compliance.cpp11.c__11_standard_conformance"></a><p class="title"><b>Table 28.1. C++11 standard Conformance</b></p>
+<a name="thread.compliance.cpp11.c__11_standard_conformance"></a><p class="title"><b>Table 30.2. C++11 standard Conformance</b></p>
<div class="table-contents"><table class="table" summary="C++11 standard Conformance">
<colgroup>
<col>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- move,variadic,terminate
+ -
</p>
</td>
<td>
<p>
- #zzzz,#6270,#6269
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- move,variadic
+ -
</p>
</td>
<td>
<p>
- #zzzz,#6270
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- terminate
+ -
</p>
</td>
<td>
<p>
- #6266
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- terminate
+ -
</p>
</td>
<td>
<p>
- #6269
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- variadic
+ -
</p>
</td>
<td>
<p>
- #6227
+ -
</p>
</td>
</tr>
</p>
</td>
<td>
+ <p>
+ -
+ </p>
</td>
<td>
<p>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- The interface doesn't corresponds
+ -
</p>
</td>
<td>
<p>
- #6342
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- interface
+ -
</p>
</td>
<td>
<p>
- #6342
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- interface
+ -
</p>
</td>
<td>
<p>
- #6342
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
- </p>
- </td>
-<td>
- <p>
- notify_all_at_thread_exit
- </p>
- </td>
-<td>
- <p>
- #xxxx
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- 30.5 6-10
- </p>
- </td>
-<td>
- <p>
- Function notify_all_at_thread_exit
- </p>
- </td>
-<td>
- <p>
- No
+ Yes
</p>
</td>
<td>
</td>
<td>
<p>
- #xxxx
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
</td>
<td>
<p>
- Yes
+ -
</p>
</td>
<td>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- allocator
+ -
</p>
</td>
<td>
<p>
- #6228
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- allocator,unique_future is the closest to future, renamed in V3
+ -
</p>
</td>
<td>
<p>
- #6228
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
</p>
</td>
<td>
<p>
- allocator
+ -
</p>
</td>
<td>
<p>
- #6228
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- No
+ Yes
</p>
</td>
<td>
<p>
- async
+ -
</p>
</td>
<td>
<p>
- #4710
+ -
</p>
</td>
</tr>
</td>
<td>
<p>
- Partial
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="thread.compliance.cpp11.extension"></a><p class="title"><b>Table 30.3. Extension</b></p>
+<div class="table-contents"><table class="table" summary="Extension">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 30.3.1.5.x
+ </p>
+ </td>
+<td>
+ <p>
+ interrupt
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 30.3.2.x
+ </p>
+ </td>
+<td>
+ <p>
+ Interruption
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 30.3.2.y
+ </p>
+ </td>
+<td>
+ <p>
+ at_thread_exit
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 30.4.3.x
</p>
</td>
<td>
<p>
- move
+ Generic locking algorithms begin/end
</p>
</td>
<td>
<p>
- #yyyy
+ -
</p>
</td>
</tr>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="thread.compliance.shared"></a><a class="link" href="compliance.html#thread.compliance.shared" title="Shared Locking extensions">Shared Locking extensions</a>
+<a name="thread.compliance.cxx14"></a><a class="link" href="compliance.html#thread.compliance.cxx14" title="C++14 standard Thread library - accepted changes">C++14 standard Thread library
+ - accepted changes</a>
</h3></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.html" target="_top">Working
+ Draft, Standard for Programming Language C++</a>
+ </p></td></tr>
+</table></div>
<div class="table">
-<a name="thread.compliance.shared.howard_s_shared_locking_proposal_conformance"></a><p class="title"><b>Table 28.2. Howard's Shared Locking Proposal Conformance</b></p>
-<div class="table-contents"><table class="table" summary="Howard's Shared Locking Proposal Conformance">
+<a name="thread.compliance.cxx14.__http___isocpp_org_files_papers_n3659_html_n3659_shared_locking_in_c___revision_2__conformance"></a><p class="title"><b>Table 30.4. [@http://isocpp.org/files/papers/N3659.html N3659 Shared locking in
+ C++ revision 2] Conformance</b></p>
+<div class="table-contents"><table class="table" summary="[@http://isocpp.org/files/papers/N3659.html N3659 Shared locking in
+ C++ revision 2] Conformance">
<colgroup>
<col>
<col>
<tr>
<td>
<p>
- X
+ 30.4.1.4
</p>
</td>
<td>
<p>
- Shared Locking
+ Shared Lockables Types
</p>
</td>
<td>
</td>
<td>
<p>
- Needs `BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSION
+ -
</p>
</td>
</tr>
<tr>
<td>
<p>
- X.1
+ 30.4.1.4.1
</p>
</td>
<td>
<p>
- Shared Lockables Concepts
+ shared_mutex class
</p>
</td>
<td>
<tr>
<td>
<p>
- X.1.1
+ 30.4.2.3
</p>
</td>
<td>
<p>
- SharedLockable concept
+ Class template shared_lock
</p>
</td>
<td>
</p>
</td>
</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thread.compliance.cxx1y"></a><a class="link" href="compliance.html#thread.compliance.cxx1y" title="C++14 TS Extensions for Concurrency V1">C++14 TS Extensions for Concurrency
+ V1 </a>
+</h3></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4107.html" target="_top">N4107-Extensions
+ for Concurrency</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.improvements_to_std__future_t__and_related_apis_"></a><p class="title"><b>Table 30.5. Improvements to std::future<T> and related APIs]</b></p>
+<div class="table-contents"><table class="table" summary="Improvements to std::future<T> and related APIs]">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
<tr>
<td>
<p>
- X.1.2
+ 2.1
</p>
</td>
<td>
<p>
- UpgradeLockable concept
+ -
</p>
</td>
<td>
<p>
- Yes
+ -
</p>
</td>
<td>
<tr>
<td>
<p>
- X.2
+ 2.2
</p>
</td>
<td>
<p>
- Shared Mutex Types
+ Class template future
</p>
</td>
<td>
<p>
- Yes
+ Partial
</p>
</td>
<td>
<tr>
<td>
<p>
- X.2.1
+ 2.2
</p>
</td>
<td>
<p>
- shared_mutex class
+ then
</p>
</td>
<td>
<p>
- Yes
+ Partial
</p>
</td>
<td>
<p>
- -
+ without implicit unwrapping #10550 and blocking #10551
</p>
</td>
</tr>
<tr>
<td>
<p>
- X.2.2
+ 2.2
</p>
</td>
<td>
<p>
- upgrade_mutex class
+ is_ready
</p>
</td>
<td>
<tr>
<td>
<p>
- X.3
+ 2.3
</p>
</td>
<td>
<p>
- Locks
+ Class template shared_future
</p>
</td>
<td>
<p>
- Yes
+ Partial
</p>
</td>
<td>
<tr>
<td>
<p>
- X.3.1
+ 2.3
</p>
</td>
<td>
<p>
- unique_lock class adaptations
+ then
</p>
</td>
<td>
<p>
- Yes
+ Partial
</p>
</td>
<td>
<p>
- -
+ Without implicit unwrapping #10550 and blocking #10551
</p>
</td>
</tr>
<tr>
<td>
<p>
- X.3.2
+ 2.3
</p>
</td>
<td>
<p>
- shared_lock class
+ is_ready
</p>
</td>
<td>
<tr>
<td>
<p>
- X.3.3
+ 2.4
</p>
</td>
<td>
<p>
- upgrade_lock class
+ Function template when_all
</p>
</td>
<td>
<p>
- Yes
+ Partial
</p>
</td>
<td>
<p>
- -
+ interface not complete #10426 and blocking #10551
</p>
</td>
</tr>
-</tbody>
-</table></div>
-</div>
-<br class="table-break">
+<tr>
+<td>
+ <p>
+ 2.5
+ </p>
+ </td>
+<td>
+ <p>
+ Function template when_any
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ interface not complete #10427 and blocking #10551
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 2.6
+ </p>
+ </td>
+<td>
+ <p>
+ Function template when_any_back
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ #XXXX
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 2.7
+ </p>
+ </td>
+<td>
+ <p>
+ Function template make_ready_future
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thread.compliance.cxx1y0"></a><a class="link" href="compliance.html#thread.compliance.cxx1y0" title="C++1z TS Concurrency - On going proposals">C++1z TS Concurrency - On going
+ proposals</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y.latch">C++ Latches and Barriers</a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y.queue">C++ Concurrent Queues</a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y.executors">Asynchronous Executors</a></span></dt>
+<dt><span class="section"><a href="compliance.html#thread.compliance.cxx1y.stream_mutex">C++ Stream Mutexes
+ - C++ Stream Guards</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="thread.compliance.cxx1y.latch"></a><a class="link" href="compliance.html#thread.compliance.cxx1y.latch" title="C++ Latches and Barriers">C++ Latches and Barriers</a>
+</h4></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3600.html" target="_top">N3600
+ C++ Latches and Barriers</a>
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3817.html" target="_top">N3817
+ C++ Latches and Barriers</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.latch.c___latches_and_barriers_conformance"></a><p class="title"><b>Table 30.6. C++ Latches and Barriers Conformance</b></p>
+<div class="table-contents"><table class="table" summary="C++ Latches and Barriers Conformance">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ X.1
+ </p>
+ </td>
+<td>
+ <p>
+ Class latch
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ A new class latch has been added. The interface is a super set
+ of the one of the proposal, taking some of the functions of the
+ class barrier.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2
+ </p>
+ </td>
+<td>
+ <p>
+ Class barrier
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ Even if Boost.Thread has a class boost:barrier it doesn't provides
+ the same kind of services. There is an experimental completion_latch
+ that could be used instead.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="thread.compliance.cxx1y.queue"></a><a class="link" href="compliance.html#thread.compliance.cxx1y.queue" title="C++ Concurrent Queues">C++ Concurrent Queues</a>
+</h4></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3533.html" target="_top">N3533
+ C++ Concurrent Queues</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.queue.c___concurrent_queues_conformance"></a><p class="title"><b>Table 30.7. C++ Concurrent Queues Conformance</b></p>
+<div class="table-contents"><table class="table" summary="C++ Concurrent Queues Conformance">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ X.1
+ </p>
+ </td>
+<td>
+ <p>
+ Conceptual interface
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ The interface provided has some differences respect to this proposal.
+ All the functions having a queue_op_status are not provided.
+ No lock-free concrete classes
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Basic Operations
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ push
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed push_back.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.1.2
+ </p>
+ </td>
+<td>
+ <p>
+ value_pop
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ renamed pull_front with two flavors.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.2
+ </p>
+ </td>
+<td>
+ <p>
+ Non-waiting operations
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ try_push
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed try_push_back
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.2.2
+ </p>
+ </td>
+<td>
+ <p>
+ try_pop
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed try_pull_back
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.3
+ </p>
+ </td>
+<td>
+ <p>
+ Non-blocking operations
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.3.1
+ </p>
+ </td>
+<td>
+ <p>
+ nonblocking_push
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed nonblocking_push_back
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.3.2
+ </p>
+ </td>
+<td>
+ <p>
+ nonblocking_pop
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed nonblocking_pull_front
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.4
+ </p>
+ </td>
+<td>
+ <p>
+ Push-front operations
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5
+ </p>
+ </td>
+<td>
+ <p>
+ Closed queues
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.1
+ </p>
+ </td>
+<td>
+ <p>
+ close
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.2
+ </p>
+ </td>
+<td>
+ <p>
+ is_closed
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed closed
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.3
+ </p>
+ </td>
+<td>
+ <p>
+ wait_push
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed wait_push_back
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.4
+ </p>
+ </td>
+<td>
+ <p>
+ wait_pop
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed wait_pull_front
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.5
+ </p>
+ </td>
+<td>
+ <p>
+ wait_push_front
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.6
+ </p>
+ </td>
+<td>
+ <p>
+ wait_pop_back
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.5.6
+ </p>
+ </td>
+<td>
+ <p>
+ open
+ </p>
+ </td>
+<td>
+ <p>
+ no
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.6
+ </p>
+ </td>
+<td>
+ <p>
+ Empty and Full Queues
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.6.1
+ </p>
+ </td>
+<td>
+ <p>
+ is_empty
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.6.2
+ </p>
+ </td>
+<td>
+ <p>
+ is_full
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ Added capacity
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.7
+ </p>
+ </td>
+<td>
+ <p>
+ Queue Names
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ Not considered a must for the time been.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.8
+ </p>
+ </td>
+<td>
+ <p>
+ Element Type Requirements
+ </p>
+ </td>
+<td>
+ <p>
+ Yes?
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.9
+ </p>
+ </td>
+<td>
+ <p>
+ Exception Handling
+ </p>
+ </td>
+<td>
+ <p>
+ Yes?
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.10
+ </p>
+ </td>
+<td>
+ <p>
+ Queue Ordering
+ </p>
+ </td>
+<td>
+ <p>
+ Yes?
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.1.11
+ </p>
+ </td>
+<td>
+ <p>
+ Lock-Free Implementations
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ waiting to stabilize the lock-based interface. Will use Boost.LockFree
+ once it is Boost.Move aware.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2
+ </p>
+ </td>
+<td>
+ <p>
+ Concrete queues
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ Locking Buffer Queue
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ classes sync_queue and a sync_bounded_queue.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ Lock-Free Buffer Queue
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ waiting to stabilize the lock-based interface. Will use Boost.LockFree
+ once it is Boost.Move aware.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3
+ </p>
+ </td>
+<td>
+ <p>
+ Additional Conceptual Tools
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3.1
+ </p>
+ </td>
+<td>
+ <p>
+ Fronts and Backs
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3.2
+ </p>
+ </td>
+<td>
+ <p>
+ Streaming Iterators
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3.3
+ </p>
+ </td>
+<td>
+ <p>
+ Storage Iterators
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Binary Interfaces
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3.4
+ </p>
+ </td>
+<td>
+ <p>
+ Managed Indirection
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="thread.compliance.cxx1y.executors"></a><a class="link" href="compliance.html#thread.compliance.cxx1y.executors" title="Asynchronous Executors">Asynchronous Executors</a>
+</h4></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3785.pdf" target="_top">N3785
+ Executors and Schedulers</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.executors.asynchronous_executors"></a><p class="title"><b>Table 30.8. Asynchronous Executors</b></p>
+<div class="table-contents"><table class="table" summary="Asynchronous Executors">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ V.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ Class executor
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ add
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ renamed with a function template submit
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.1.1
+ </p>
+ </td>
+<td>
+ <p>
+ num_of_pendin_closures
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.1.2
+ </p>
+ </td>
+<td>
+ <p>
+ Class sceduled_executor
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.1.2
+ </p>
+ </td>
+<td>
+ <p>
+ add_at
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ renamed with a function template submit_at
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.1.2
+ </p>
+ </td>
+<td>
+ <p>
+ add_after
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ renamed with a function template submit_after
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2
+ </p>
+ </td>
+<td>
+ <p>
+ Concrete executor classes
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ thread_pool
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ static version Basic_thread_pool, dynamic one execduler_adaptor<basic_thread_pool>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2.2
+ </p>
+ </td>
+<td>
+ <p>
+ serial_executor
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2.3
+ </p>
+ </td>
+<td>
+ <p>
+ loop_executor
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ static version loop_scheduler, dynamic one execduler_adaptor<loop_scheduler>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2.4
+ </p>
+ </td>
+<td>
+ <p>
+ inline_executor
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ static version inline_executor, dynamic one execduler_adaptor<inline_executor>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ V.2.5
+ </p>
+ </td>
+<td>
+ <p>
+ thread_executor
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ static version thread_executor, dynamic one execduler_adaptor<thread_executor>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3784.pdf" target="_top">N3784-Improvements
+ to `std::future<T> and Related APIs</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.executors._async__future_shared_future__then_and_executors"></a><p class="title"><b>Table 30.9. `async, future/shared_future::then`and Executors</b></p>
+<div class="table-contents"><table class="table" summary="`async, future/shared_future::then`and Executors">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ 30.6.6
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">future</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">then</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 30.6.7
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">shared_future</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">then</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ 30.6.8
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">async</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="thread.compliance.cxx1y.stream_mutex"></a><a class="link" href="compliance.html#thread.compliance.cxx1y.stream_mutex" title="C++ Stream Mutexes - C++ Stream Guards">C++ Stream Mutexes
+ - C++ Stream Guards</a>
+</h4></div></div></div>
+<p>
+ While Boost.Thread implementation of stream mutexes differ in the approach,
+ it is worth comparing with the current trend on the standard.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ These functions are based on <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3535.html" target="_top"><span class="bold"><strong>N3535 - C++ Stream Mutexes</strong></span></a> by Lawrence
+ Crowl.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This proposal has been replaced already by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3678.html" target="_top">N3678
+ - C++ Stream Guards</a>, which has been replaced by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3678.html" target="_top">N3665
+ - Uninterleaved String Output Streaming</a> and <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3678.html" target="_top">N3750
+ - C++ Ostream Buffers</a>
+ </p></td></tr>
+</table></div>
+<div class="table">
+<a name="thread.compliance.cxx1y.stream_mutex.c___stream_mutexes_conformance"></a><p class="title"><b>Table 30.10. C++ Stream Mutexes Conformance</b></p>
+<div class="table-contents"><table class="table" summary="C++ Stream Mutexes Conformance">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+<th>
+ <p>
+ Comments
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ X.1
+ </p>
+ </td>
+<td>
+ <p>
+ Class template stream_mutex
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ Renamed externally_locked_stream<>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ constructor
+ </p>
+ </td>
+<td>
+ <p>
+ Partial
+ </p>
+ </td>
+<td>
+ <p>
+ externally_locked_stream needs a mutex in addition as argument.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.2
+ </p>
+ </td>
+<td>
+ <p>
+ lock
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.3
+ </p>
+ </td>
+<td>
+ <p>
+ unlock
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.4
+ </p>
+ </td>
+<td>
+ <p>
+ try_lock
+ </p>
+ </td>
+<td>
+ <p>
+ yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.5
+ </p>
+ </td>
+<td>
+ <p>
+ hold
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.6
+ </p>
+ </td>
+<td>
+ <p>
+ bypass
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2
+ </p>
+ </td>
+<td>
+ <p>
+ Class template stream_guard
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.1
+ </p>
+ </td>
+<td>
+ <p>
+ stream_guard
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.2
+ </p>
+ </td>
+<td>
+ <p>
+ ~stream_guard
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.2.3
+ </p>
+ </td>
+<td>
+ <p>
+ bypass
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.3
+ </p>
+ </td>
+<td>
+ <p>
+ Stream Operators
+ </p>
+ </td>
+<td>
+ <p>
+ Yes
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ X.4
+ </p>
+ </td>
+<td>
+ <p>
+ Predefined Objects
+ </p>
+ </td>
+<td>
+ <p>
+ No
+ </p>
+ </td>
+<td>
+ <p>
+ -
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright © 2007 -11 Anthony Williams<br>Copyright © 2011 -12 Vicente J. Botet Escriba<p>
+<td align="right"><div class="copyright-footer">Copyright © 2007 -11 Anthony Williams<br>Copyright © 2011 -14 Vicente J. Botet Escriba<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>