continuable/namespacecti.html
2018-03-17 13:27:07 +01:00

354 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-115514125-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-115514125-1');
</script>
<meta charset="UTF-8" />
<title>cti namespace | Continuable</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="base.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="terminal.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<link rel="stylesheet" href="atom-one-dark.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#23373B" />
</head>
<body>
<header><nav id="navigation">
<div class="m-container">
<div class="m-row">
<a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">Continuable <span class="m-thin">3.0.0</span></a>
<div class="m-col-t-4 m-hide-m m-text-right m-nopadr">
<a href="#search" class="m-dox-search-icon" title="Search" onclick="return showSearch()"><svg viewBox="0 0 16 16">
<path d="m6 0c-3.3144 0-6 2.6856-6 6 0 3.3144 2.6856 6 6 6 1.4858 0 2.8463-0.54083 3.8945-1.4355-0.0164 0.33797 0.14734 0.75854 0.5 1.1504l3.2227 3.7891c0.55185 0.6139 1.4517 0.66544 2.002 0.11524 0.55022-0.55022 0.49866-1.4501-0.11524-2.002l-3.7891-3.2246c-0.39184-0.35266-0.81242-0.51469-1.1504-0.5 0.89472-1.0482 1.4355-2.4088 1.4355-3.8945 0-3.3128-2.6856-5.998-6-5.998zm0 1.5625a4.4375 4.4375 0 0 1 4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375-4.4375 4.4375 4.4375 0 0 1 4.4375-4.4375z"/>
</svg></a>
<a id="m-navbar-show" href="#navigation" title="Show navigation"></a>
<a id="m-navbar-hide" href="#" title="Hide navigation"></a>
</div>
<div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
<div class="m-row">
<ol class="m-col-t-6 m-col-m-none">
<li>
<a href="tutorial.html">Tutorial</a>
<ol>
<li><a href="tutorial-creating-continuables.html">Creating continuables</a></li>
<li><a href="tutorial-chaining-continuables.html">Chaining continuables</a></li>
<li><a href="tutorial-connecting-continuables.html">Connecting continuables</a></li>
<li><a href="tutorial-transforming-continuables.html">Transforming continuables</a></li>
<li><a href="tutorial-awaiting-continuables.html">Awaiting continuables</a></li>
<li><a href="tutorial-promisify-continuables.html">Promisify functions</a></li>
</ol>
</li>
<li>
<a href="pages.html">Pages</a>
<ol>
<li><a href="installation.html">Installation</a></li>
<li><a href="tutorial.html">Tutorial</a></li>
<li><a href="configuration.html">Configuration</a></li>
<li><a href="changelog.html">Changelog</a></li>
</ol>
</li>
<li>
<a href="modules.html">Modules</a>
<ol>
<li><a href="group___base.html">Base</a></li>
<li><a href="group___connections.html">Connections</a></li>
<li><a href="group___promisify.html">Promisify</a></li>
<li><a href="group___testing.html">Testing</a></li>
<li><a href="group___types.html">Types</a></li>
<li><a href="group___transforms.html">Transforms</a></li>
<li><a href="group___traversal.html">Traversal</a></li>
</ol>
</li>
</ol>
<ol class="m-col-t-6 m-col-m-none" start="4">
<li>
<a href="namespacecti.html" id="m-navbar-current">cti</a>
<ol>
<li><a href="namespacecti_1_1transforms.html">cti::transforms</a></li>
<li><a href="classcti_1_1continuable__base.html">cti::continuable_base</a></li>
<li><a href="classcti_1_1promise__base.html">cti::promise_base</a></li>
</ol>
</li>
<li class="m-show-m"><a href="#search" class="m-dox-search-icon" title="Search" onclick="return showSearch()"><svg viewBox="0 0 16 16">
<path d="m6 0c-3.3144 0-6 2.6856-6 6 0 3.3144 2.6856 6 6 6 1.4858 0 2.8463-0.54083 3.8945-1.4355-0.0164 0.33797 0.14734 0.75854 0.5 1.1504l3.2227 3.7891c0.55185 0.6139 1.4517 0.66544 2.002 0.11524 0.55022-0.55022 0.49866-1.4501-0.11524-2.002l-3.7891-3.2246c-0.39184-0.35266-0.81242-0.51469-1.1504-0.5 0.89472-1.0482 1.4355-2.4088 1.4355-3.8945 0-3.3128-2.6856-5.998-6-5.998zm0 1.5625a4.4375 4.4375 0 0 1 4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375 4.4375 4.4375 4.4375 0 0 1-4.4375-4.4375 4.4375 4.4375 0 0 1 4.4375-4.4375z"/>
</svg> Search</a></li>
</ol>
<ol class="m-col-t-6 m-col-m-none">
<li>
<a href="https://github.com/Naios/continuable" aria-label="View source on Github"><i class="fa fa-github"></i> Code</a>
</li>
</ol>
</div>
</div>
</div>
</div>
</nav></header>
<main><article>
<div class="m-container m-container-inflatable">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<h1>cti <span class="m-thin">namespace</span></h1>
<p>Declares the continuable library namespace.</p>
<div class="m-block m-default">
<h3>Contents</h3>
<ul>
<li>
Reference
<ul>
<li><a href="#namespaces">Namespaces</a></li>
<li><a href="#nested-classes">Classes</a></li>
<li><a href="#typedef-members">Typedefs</a></li>
<li><a href="#func-members">Functions</a></li>
</ul>
</li>
</ul>
</div>
<p>The most important class is <a href="classcti_1_1continuable__base.html" class="m-dox">cti::<wbr />continuable_base</a>, that provides the whole functionality for continuation chaining.</p><p>The class <a href="classcti_1_1continuable__base.html" class="m-dox">cti::<wbr />continuable_base</a> is created through the <a href="group___base.html#gaf47869ea139d88976af5b9654d6d61c0" class="m-dox">cti::<wbr />make_continuable()</a> function which accepts a callback taking function.</p><p>Also there are following support functions available:</p><ul><li><a href="group___connections.html#gaef652b8561f76cad49e83cfa21a71734" class="m-dox">cti::<wbr />when_all()</a> - connects <a href="classcti_1_1continuable__base.html" class="m-dox">cti::<wbr />continuable_base</a>&#x27;s to an <code>all</code> connection.</li><li><a href="group___connections.html#ga313760e876d0cbc766b41f6b192544bb" class="m-dox">cti::<wbr />when_any()</a> - connects <a href="classcti_1_1continuable__base.html" class="m-dox">cti::<wbr />continuable_base</a>&#x27;s to an <code>any</code> connection.</li><li><a href="group___connections.html#ga481c31024079b6074617c64b16e615dd" class="m-dox">cti::<wbr />when_seq()</a> - connects <a href="classcti_1_1continuable__base.html" class="m-dox">cti::<wbr />continuable_base</a>&#x27;s to a sequence.</li></ul>
<section id="namespaces">
<h2><a href="#namespaces">Namespaces</a></h3>
<dl class="m-dox">
<dt>namespace <a href="namespacecti_1_1transforms.html" class="m-dox">transforms</a></dt>
<dd>The namespace transforms declares callable objects that transform any <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> to an object or to a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> itself.</dd>
</dl>
</section>
<section id="nested-classes">
<h2><a href="#nested-classes">Classes</a></h3>
<dl class="m-dox">
<dt>
<div class="m-dox-template">template&lt;typename Data, typename Annotation&gt;</div>
class <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_base</a>
</dt>
<dd>The main class of the continuable library, it provides the functionality for chaining callbacks and continuations together to a unified hierarchy.</dd>
<dt>
<div class="m-dox-template">template&lt;template&lt;std::size_t, typename...&gt; class CallbackWrapper, template&lt;std::size_t, typename...&gt; class ContinuationWrapper, typename... Args&gt;</div>
class <a href="classcti_1_1continuable__trait.html" class="m-dox">continuable_trait</a>
</dt>
<dd>Trait to retrieve a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> type with a given type-erasure backend.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Data, typename Hint&gt;</div>
class <a href="classcti_1_1promise__base.html" class="m-dox">promise_base</a>
</dt>
<dd>The <a href="classcti_1_1promise__base.html" class="m-dox">promise_<wbr />base</a> makes it possible to resolve an asynchronous continuable through it&#x27;s result or through an error type.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Result&gt;</div>
class <a href="classcti_1_1promisify.html" class="m-dox">promisify</a>
</dt>
<dd>Helper class for converting callback taking callable types into a a continuable. Various styles are supported.</dd>
</dl>
</section>
<section id="typedef-members">
<h2><a href="#typedef-members">Typedefs</a></h3>
<dl class="m-dox">
<dt>
using <a href="group___base.html#ga9518a71f87f4d0efd18518c818907a92" class="m-dox">dispatch_error_tag</a> = detail::types::dispatch_error_tag
</dt>
<dd>Represents a tag which can be placed first in a signature in order to overload callables with the asynchronous result as well as an error.</dd>
<dt>
using <a href="group___base.html#ga7fcba5095c36f2577e1f4a2c5608dc6a" class="m-dox">error_type</a> = detail::types::error_type
</dt>
<dd>Represents the type that is used as error type.</dd>
<dt>
<div class="m-dox-template">template&lt;typename T&gt;</div>
using <a href="group___base.html#gabe4e73c301a2697d9252c400194474e0" class="m-dox">is_continuable</a> = detail::base::is_continuable&lt;T&gt;
</dt>
<dd>Deduces to a true_type if the given type is a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a>.</dd>
<dt>
<div class="m-dox-template">template&lt;typename T&gt;</div>
using <a href="group___transforms.html#gad64ab92505da9dbc999ecc6f964d47c2" class="m-dox">transform</a> = detail::types::transform&lt;T&gt;
</dt>
<dd>A callable tag object which marks a wrapped callable object as continuable transformation which enables some useful overloads.</dd>
<dt>
using <a href="group___traversal.html#ga170b41a7aacd94036f9da0af42c6558d" class="m-dox">async_traverse_visit_tag</a> = detail::traversal::async_traverse_visit_tag
</dt>
<dd>A tag which is passed to the <code>operator()</code> of the visitor if an element is visited synchronously through <a href="group___traversal.html#ga02922d0c5bf7a18340069b3500a0cf90" class="m-dox">traverse_<wbr />pack_<wbr />async</a>.</dd>
<dt>
using <a href="group___traversal.html#gacc6d0dce8126550436303d433c96b1d7" class="m-dox">async_traverse_detach_tag</a> = detail::traversal::async_traverse_detach_tag
</dt>
<dd>A tag which is passed to the <code>operator()</code> of the visitor if an element is visited after the traversal was detached through <a href="group___traversal.html#ga02922d0c5bf7a18340069b3500a0cf90" class="m-dox">traverse_<wbr />pack_<wbr />async</a>.</dd>
<dt>
using <a href="group___traversal.html#ga1c9f6c5ba9ffb68ff36a1f95b78e7d3a" class="m-dox">async_traverse_complete_tag</a> = detail::traversal::async_traverse_complete_tag
</dt>
<dd>A tag which is passed to the <code>operator()</code> of the visitor if the asynchronous pack traversal was finished through <a href="group___traversal.html#ga02922d0c5bf7a18340069b3500a0cf90" class="m-dox">traverse_<wbr />pack_<wbr />async</a>.</dd>
<dt>
<div class="m-dox-template">template&lt;typename T&gt;</div>
using <a href="group___traversal.html#gaf67b511265fa74dc4b117cdb1ce9d1e3" class="m-dox">async_traverse_in_place_tag</a> = detail::traversal::async_traverse_in_place_tag&lt;T&gt;
</dt>
<dd>A tag to identify that a mapper shall be constructed in-place from the first argument passed to <a href="group___traversal.html#ga02922d0c5bf7a18340069b3500a0cf90" class="m-dox">traverse_<wbr />pack_<wbr />async</a>.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
using <a href="group___types.html#ga7c8df37fa79b1da94a876e8fc590783c" class="m-dox">continuable</a> = typename <a href="classcti_1_1continuable__trait.html" class="m-dox">detail::<wbr />unique_trait_of</a>&lt;Args...&gt;::<a href="group___types.html#ga7c8df37fa79b1da94a876e8fc590783c" class="m-dox">continuable</a>
</dt>
<dd>Defines a non-copyable continuation type which uses the function2 backend for type erasure.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
using <a href="group___types.html#ga73e58e7558ecf3bd885cb2381160a582" class="m-dox">promise</a> = typename <a href="classcti_1_1continuable__trait.html" class="m-dox">detail::<wbr />unique_trait_of</a>&lt;Args...&gt;::<a href="group___types.html#ga73e58e7558ecf3bd885cb2381160a582" class="m-dox">promise</a>
</dt>
<dd>Defines a non-copyable promise type which is using the function2 backend for type erasure.</dd>
<dt>
using <a href="group___types.html#ga3067ad3b42db5e89a87b9f8f19e104b4" class="m-dox">work</a> = detail::work
</dt>
<dd>Defines a non-copyable type erasure which is capable of carrying callable objects passed to executors.</dd>
</dl>
</section>
<section id="func-members">
<h2><a href="#func-members">Functions</a></h3>
<dl class="m-dox">
<dt>
<div class="m-dox-template">template&lt;typename... Args, typename Continuation&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___base.html#gaf47869ea139d88976af5b9654d6d61c0" class="m-dox">make_continuable</a>(</span><span class="m-dox-wrap">Continuation&amp;&amp; continuation) -&gt; auto <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Creates a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> from a promise/callback taking function.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___base.html#gaa638513fe4c0a80b9ad445f8dff91250" class="m-dox">make_ready_continuable</a>(</span><span class="m-dox-wrap">) -&gt; auto <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Returns a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with no result which instantly resolves the promise with no values.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Result&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___base.html#gaad3c8cc144f08d8d3614651ae36f7106" class="m-dox">make_ready_continuable</a>(</span><span class="m-dox-wrap">Result&amp;&amp; result) -&gt; auto <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Returns a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with one result value which instantly resolves the promise with the given value.</dd>
<dt>
<div class="m-dox-template">template&lt;typename FirstResult, typename SecondResult, typename... Rest&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___base.html#gade7f394af50a956c2516bffc29410a9d" class="m-dox">make_ready_continuable</a>(</span><span class="m-dox-wrap">FirstResult&amp;&amp; first_result,
SecondResult&amp;&amp; second_result,
Rest&amp;&amp;... rest) -&gt; auto <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Returns a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with multiple result values which instantly resolves the promise with the given values.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Signature, typename Exception&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___base.html#ga41794c321aef916f4fd0fe4c36aa9e6e" class="m-dox">make_exceptional_continuable</a>(</span><span class="m-dox-wrap">Exception&amp;&amp; exception) -&gt; auto <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Returns a <a href="classcti_1_1continuable__base.html" class="m-dox">continuable_<wbr />base</a> with the parameterized result which instantly resolves the promise with the given error type.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#gaef652b8561f76cad49e83cfa21a71734" class="m-dox">when_all</a>(</span><span class="m-dox-wrap">Args&amp;&amp;... args) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with an all logic. All continuables contained inside the given nested pack are invoked at once. On completion the final handler is called with the aggregated result of all continuables.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Iterator, std::enable_if_t&lt;detail::range::is_iterator&lt;Iterator&gt;::value&gt;* = nullptr&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#gaa39f871e8aa99953dc83fda92b449024" class="m-dox">when_all</a>(</span><span class="m-dox-wrap">Iterator begin,
Iterator end) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with an all logic. The content of the iterator is moved out and converted to a temporary <code>std::vector</code> which is then passed to when_all.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#ga481c31024079b6074617c64b16e615dd" class="m-dox">when_seq</a>(</span><span class="m-dox-wrap">Args&amp;&amp;... args) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with a sequential logic. All continuables contained inside the given nested pack are invoked one after one. On completion the final handler is called with the aggregated result of all continuables.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Iterator, std::enable_if_t&lt;detail::range::is_iterator&lt;Iterator&gt;::value&gt;* = nullptr&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#ga1d52caeca48122b5aebb276d0d47805a" class="m-dox">when_seq</a>(</span><span class="m-dox-wrap">Iterator begin,
Iterator end) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with a sequential logic. The content of the iterator is moved out and converted to a temporary <code>std::vector</code> which is then passed to when_seq.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... Args&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#ga313760e876d0cbc766b41f6b192544bb" class="m-dox">when_any</a>(</span><span class="m-dox-wrap">Args&amp;&amp;... args) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with an any logic. All continuables contained inside the given nested pack are invoked at once. On completion of one continuable the final handler is called with the result of the resolved continuable.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Iterator, std::enable_if_t&lt;detail::range::is_iterator&lt;Iterator&gt;::value&gt;* = nullptr&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#ga580b6b0d4fd31371b2f37e0dc5bf039b" class="m-dox">when_any</a>(</span><span class="m-dox-wrap">Iterator begin,
Iterator end) -&gt; auto</span>
</dt>
<dd>Connects the given arguments with an any logic. The content of the iterator is moved out and converted to a temporary <code>std::vector</code> which is then passed to when_all.</dd>
<dt>
<div class="m-dox-template">template&lt;template&lt;typename, typename&gt; class C = std::vector, typename First, typename... Args&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___connections.html#ga4f6ecedf4b4ccd5e1c28d937ad717b32" class="m-dox">populate</a>(</span><span class="m-dox-wrap">First&amp;&amp; first,
Args&amp;&amp;... args) -&gt; C&lt;std::decay_t&lt;First&gt;, std::allocator&lt;std::decay_t&lt;First&gt;&gt;&gt;</span>
</dt>
<dd>Populates a homogeneous container from the given arguments. All arguments need to be convertible to the first one, by default <code>std::vector</code> is used as container type.</dd>
<dt>
<div class="m-dox-template">template&lt;typename T&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___transforms.html#ga2383cf2e4cf7d8d43efeb25f790be006" class="m-dox">make_transform</a>(</span><span class="m-dox-wrap">T&amp;&amp; callable) -&gt; auto</span>
</dt>
<dd>Wraps the given callable object into a transform class.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Visitor, typename... T&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___traversal.html#ga02922d0c5bf7a18340069b3500a0cf90" class="m-dox">traverse_pack_async</a>(</span><span class="m-dox-wrap">Visitor&amp;&amp; visitor,
T&amp;&amp;... pack) -&gt; auto</span>
</dt>
<dd>Traverses the pack with the given visitor in an asynchronous way.</dd>
<dt>
<div class="m-dox-template">template&lt;typename Mapper, typename... T&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___traversal.html#gace27f8127eb5eba0f4ab753daacf6a57" class="m-dox">map_pack</a>(</span><span class="m-dox-wrap">Mapper&amp;&amp; mapper,
T&amp;&amp;... pack) -&gt; decltype(auto)</span>
</dt>
<dd>Maps the pack with the given mapper.</dd>
<dt>
<div class="m-dox-template">template&lt;typename... T&gt;</div>
<span class="m-dox-wrap-bumper">auto <a href="group___traversal.html#ga7c14358f4d11803b50ab9687dfcb11c5" class="m-dox">spread_this</a>(</span><span class="m-dox-wrap">T&amp;&amp;... args) -&gt; detail::traversal::spreading::spread_box&lt;std::decay_t&lt;T&gt;...&gt; <span class="m-label m-flat m-primary">constexpr</span></span>
</dt>
<dd>Indicate that the result shall be spread across the parent container if possible. This can be used to create a mapper function used in map_pack that maps one element to an arbitrary count (1:n).</dd>
<dt>
<div class="m-dox-template">template&lt;typename Mapper, typename... T&gt;</div>
<span class="m-dox-wrap-bumper">void <a href="group___traversal.html#gab497ec8ef4cf8532703fcb9852846a2e" class="m-dox">traverse_pack</a>(</span><span class="m-dox-wrap">Mapper&amp;&amp; mapper,
T&amp;&amp;... pack)</span>
</dt>
<dd>Traverses the pack with the given visitor.</dd>
</dl>
</section>
</div>
</div>
</div>
</article></main>
<div class="m-dox-search" id="search">
<a href="#!" onclick="return hideSearch()"></a>
<div class="m-container">
<div class="m-row">
<div class="m-col-m-8 m-push-m-2">
<div class="m-dox-search-header m-text m-small">
<div><span class="m-label m-default">Tab</span> / <span class="m-label m-default">T</span> to search, <span class="m-label m-default">Esc</span> to close</div>
<div id="search-symbolcount">&hellip;</div>
</div>
<div class="m-dox-search-content">
<input type="search" id="search-input" placeholder="Loading &hellip;" disabled="disabled" autofocus="autofocus" />
<noscript class="m-text m-danger m-text-center">Unlike everything else in the docs, the search functionality <em>requires</em> JavaScript.</noscript>
<div id="search-help" class="m-text m-dim m-text-center">
Search for symbols, directories, files, pages or modules. You can omit any
prefix from the symbol or file path; adding a <code>:</code> or <code>/</code>
suffix lists all members of given symbol or directory. Navigate through the
list using <span class="m-label m-dim">&darr;</span> and
<span class="m-label m-dim">&uarr;</span>, press
<span class="m-label m-dim">Enter</span> to go.
</div>
<div id="search-notfound" class="m-text m-warning m-text-center">Sorry, nothing was found.</div>
<ul id="search-results"></ul>
</div>
</div>
</div>
</div>
</div>
<script src="search.js"></script>
<script src="searchdata.js" async="async"></script>
<footer><nav>
<div class="m-container">
<div class="m-row">
<div class="m-col-l-10 m-push-l-1">
<b><a href="https://github.com/Naios/continuable">continuable</a></b> - C++14 allocation aware futures</br>Copyright 2015&ndash;2018 <a href="https://github.com/Naios">Denis Blank</a>. Contact the author via <a href="mailto:denis.blank@outlook.com">e-mail</a>.</br>Powered by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>
</div>
</div>
</div>
</nav></footer>
</body>
</html>