Files
tdesktop/Telegram/ThirdParty/range-v3/doc/gh-pages/group__transformation.html
allhaileris afb81b8278
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
init
2026-02-16 15:50:16 +03:00

773 lines
62 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Range-v3: Transformation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Range-v3
</div>
<div id="projectbrief">Range algorithms, views, and actions for the Standard Library</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__transformation.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle"><div class="title">Transformation<div class="ingroups"><a class="el" href="group__meta.html">Meta</a> &raquo; <a class="el" href="group__algorithm.html">Algorithms</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Transformation algorithms.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__lazy__transformation"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__lazy__transformation.html">lazy</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gadec7869718bf0ddf69579775156b351d"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename State , invocable Fn&gt; </td></tr>
<tr class="memitem:gadec7869718bf0ddf69579775156b351d"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gadec7869718bf0ddf69579775156b351d">meta::accumulate</a> = <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt; L, State, Fn &gt;</td></tr>
<tr class="memdesc:gadec7869718bf0ddf69579775156b351d"><td class="mdescLeft">&#160;</td><td class="mdescRight">An alias for <code><a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff" title="Return a new meta::list constructed by doing a left fold of the list L using binary invocable Fn and ...">meta::fold</a></code>. <a href="group__transformation.html#gadec7869718bf0ddf69579775156b351d">More...</a><br /></td></tr>
<tr class="separator:gadec7869718bf0ddf69579775156b351d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e408243147a04c1ca2742211e3c0982"><td class="memTemplParams" colspan="2">template&lt;list_like ListOfLists&gt; </td></tr>
<tr class="memitem:ga5e408243147a04c1ca2742211e3c0982"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga5e408243147a04c1ca2742211e3c0982">meta::cartesian_product</a> = <a class="el" href="group__transformation.html#ga731ad47dfb1f72563fdad66fa5ae2a1a">reverse_fold</a>&lt; ListOfLists, <a class="el" href="structmeta_1_1list.html">list</a>&lt; <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, <a class="el" href="group__composition.html#ga945a0c21082eec9a2c7b9b8bda15e580">quote_trait</a>&lt; detail::cartesian_product_fn &gt; &gt;</td></tr>
<tr class="memdesc:ga5e408243147a04c1ca2742211e3c0982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a list of lists <code>ListOfLists</code>, return a new list of lists that is the Cartesian Product. Like the <code>sequence</code> function from the Haskell Prelude. <a href="group__transformation.html#ga5e408243147a04c1ca2742211e3c0982">More...</a><br /></td></tr>
<tr class="separator:ga5e408243147a04c1ca2742211e3c0982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8d0d695134bd6b94698ae4f1c0d2f553"><td class="memTemplParams" colspan="2">template&lt;list_like ... Ls&gt; </td></tr>
<tr class="memitem:ga8d0d695134bd6b94698ae4f1c0d2f553"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga8d0d695134bd6b94698ae4f1c0d2f553">meta::concat_</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::concat_&lt; Ls... &gt; &gt;</td></tr>
<tr class="memdesc:ga8d0d695134bd6b94698ae4f1c0d2f553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates several lists into a single list. <a href="group__transformation.html#ga8d0d695134bd6b94698ae4f1c0d2f553">More...</a><br /></td></tr>
<tr class="separator:ga8d0d695134bd6b94698ae4f1c0d2f553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4883188d34dd23dc949f737c17a1a317"><td class="memTemplParams" colspan="2">template&lt;list_like L, integral N&gt; </td></tr>
<tr class="memitem:ga4883188d34dd23dc949f737c17a1a317"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga4883188d34dd23dc949f737c17a1a317">meta::drop</a> = <a class="el" href="group__transformation.html#gac8f2eb92a10b78f432a4430bc4d05ba9">drop_c</a>&lt; L, N::type::value &gt;</td></tr>
<tr class="memdesc:ga4883188d34dd23dc949f737c17a1a317"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first <code>N</code> elements from <code>L</code>. <a href="group__transformation.html#ga4883188d34dd23dc949f737c17a1a317">More...</a><br /></td></tr>
<tr class="separator:ga4883188d34dd23dc949f737c17a1a317"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8f2eb92a10b78f432a4430bc4d05ba9"><td class="memTemplParams" colspan="2">template&lt;list_like L, std::size_t N&gt; </td></tr>
<tr class="memitem:gac8f2eb92a10b78f432a4430bc4d05ba9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gac8f2eb92a10b78f432a4430bc4d05ba9">meta::drop_c</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::drop_&lt; L, N &gt; &gt;</td></tr>
<tr class="memdesc:gac8f2eb92a10b78f432a4430bc4d05ba9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first <code>N</code> elements from <code>L</code>. <a href="group__transformation.html#gac8f2eb92a10b78f432a4430bc4d05ba9">More...</a><br /></td></tr>
<tr class="separator:gac8f2eb92a10b78f432a4430bc4d05ba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac34d21074558f4ddc07a6206d5065619"><td class="memTemplParams" colspan="2">template&lt;typename L , typename Pred &gt; </td></tr>
<tr class="memitem:gac34d21074558f4ddc07a6206d5065619"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gac34d21074558f4ddc07a6206d5065619">meta::filter</a> = <a class="el" href="group__transformation.html#gae8b919ad4c2cfe9b0fc7549cedae5e37">join</a>&lt; <a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a>&lt; L, detail::filter_&lt; Pred &gt; &gt; &gt;</td></tr>
<tr class="memdesc:gac34d21074558f4ddc07a6206d5065619"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a new <a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a> where only those elements of <code>L</code> that satisfy the Callable <code>Pred</code> such that <code>invoke&lt;Pred,A&gt;::value</code> is <code>true</code> are present. That is, those elements that don't satisfy the <code>Pred</code> are "removed". <a href="group__transformation.html#gac34d21074558f4ddc07a6206d5065619">More...</a><br /></td></tr>
<tr class="separator:gac34d21074558f4ddc07a6206d5065619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gace05917716be9857eb49b847b17548ff"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename State , invocable Fn&gt; </td></tr>
<tr class="memitem:gace05917716be9857eb49b847b17548ff"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">meta::fold</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::fold_&lt; L, State, Fn &gt; &gt;</td></tr>
<tr class="memdesc:gace05917716be9857eb49b847b17548ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by doing a left fold of the list <code>L</code> using binary invocable <code>Fn</code> and initial state <code>State</code>. That is, the <code>State(N)</code> for the list element <code>A(N)</code> is computed by <code>Fn(State(N-1), A(N)) -&gt; State(N)</code>. <a href="group__transformation.html#gace05917716be9857eb49b847b17548ff">More...</a><br /></td></tr>
<tr class="separator:gace05917716be9857eb49b847b17548ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8b919ad4c2cfe9b0fc7549cedae5e37"><td class="memTemplParams" colspan="2">template&lt;list_like ListOfLists&gt; </td></tr>
<tr class="memitem:gae8b919ad4c2cfe9b0fc7549cedae5e37"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gae8b919ad4c2cfe9b0fc7549cedae5e37">meta::join</a> = <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt; <a class="el" href="structmeta_1_1quote.html">quote</a>&lt; concat &gt;, ListOfLists &gt;</td></tr>
<tr class="memdesc:gae8b919ad4c2cfe9b0fc7549cedae5e37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joins a list of lists into a single list. <a href="group__transformation.html#gae8b919ad4c2cfe9b0fc7549cedae5e37">More...</a><br /></td></tr>
<tr class="separator:gae8b919ad4c2cfe9b0fc7549cedae5e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga15c1c01dfb904208e7d71d660caff4ca"><td class="memTemplParams" colspan="2">template&lt;list_like L, invocable Fn&gt; </td></tr>
<tr class="memitem:ga15c1c01dfb904208e7d71d660caff4ca"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga15c1c01dfb904208e7d71d660caff4ca">meta::partition</a> = <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt; L, <a class="el" href="group__list.html#gafd1e131e4e3ae4b0ae9bd3d2ec3a5f74">pair</a>&lt; <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt;, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, detail::partition_&lt; Fn &gt; &gt;</td></tr>
<tr class="memdesc:ga15c1c01dfb904208e7d71d660caff4ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pair of lists, where the elements of <code>L</code> that satisfy the invocable <code>Fn</code> such that <code>invoke&lt;Fn,A&gt;::value</code> is <code>true</code> are present in the first list and the rest are in the second. <a href="group__transformation.html#ga15c1c01dfb904208e7d71d660caff4ca">More...</a><br /></td></tr>
<tr class="separator:ga15c1c01dfb904208e7d71d660caff4ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae161f030face244119ce54815630d878"><td class="memTemplParams" colspan="2">template&lt;list_like L&gt; </td></tr>
<tr class="memitem:gae161f030face244119ce54815630d878"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gae161f030face244119ce54815630d878">meta::pop_front</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::pop_front_&lt; L &gt; &gt;</td></tr>
<tr class="memdesc:gae161f030face244119ce54815630d878"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first element from the front of <code>L</code>. <a href="group__transformation.html#gae161f030face244119ce54815630d878">More...</a><br /></td></tr>
<tr class="separator:gae161f030face244119ce54815630d878"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafee8f315356d19c47069adb56890a920"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename... Ts&gt; </td></tr>
<tr class="memitem:gafee8f315356d19c47069adb56890a920"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gafee8f315356d19c47069adb56890a920">meta::push_back</a> = <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt; <a class="el" href="structmeta_1_1bind__back.html">bind_back</a>&lt; <a class="el" href="structmeta_1_1quote.html">quote</a>&lt; <a class="el" href="structmeta_1_1list.html">list</a> &gt;, Ts... &gt;, L &gt;</td></tr>
<tr class="memdesc:gafee8f315356d19c47069adb56890a920"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by adding the element <code>T</code> to the back of <code>L</code>. <a href="group__transformation.html#gafee8f315356d19c47069adb56890a920">More...</a><br /></td></tr>
<tr class="separator:gafee8f315356d19c47069adb56890a920"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga26c72d739945496ab36891f495c3ca98"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename... Ts&gt; </td></tr>
<tr class="memitem:ga26c72d739945496ab36891f495c3ca98"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga26c72d739945496ab36891f495c3ca98">meta::push_front</a> = <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt; <a class="el" href="structmeta_1_1bind__front.html">bind_front</a>&lt; <a class="el" href="structmeta_1_1quote.html">quote</a>&lt; <a class="el" href="structmeta_1_1list.html">list</a> &gt;, Ts... &gt;, L &gt;</td></tr>
<tr class="memdesc:ga26c72d739945496ab36891f495c3ca98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by adding the element <code>T</code> to the front of <code>L</code>. <a href="group__transformation.html#ga26c72d739945496ab36891f495c3ca98">More...</a><br /></td></tr>
<tr class="separator:ga26c72d739945496ab36891f495c3ca98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44e0ae4574066da2f71dd72ec245da23"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename T , typename U &gt; </td></tr>
<tr class="memitem:ga44e0ae4574066da2f71dd72ec245da23"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga44e0ae4574066da2f71dd72ec245da23">meta::replace</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::replace_&lt; L, T, U &gt; &gt;</td></tr>
<tr class="memdesc:ga44e0ae4574066da2f71dd72ec245da23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all instances of type <code>T</code> have been replaced with <code>U</code>. <a href="group__transformation.html#ga44e0ae4574066da2f71dd72ec245da23">More...</a><br /></td></tr>
<tr class="separator:ga44e0ae4574066da2f71dd72ec245da23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa54c43f08dc95c371f1281ee1d106d80"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename C , typename U &gt; </td></tr>
<tr class="memitem:gaa54c43f08dc95c371f1281ee1d106d80"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gaa54c43f08dc95c371f1281ee1d106d80">meta::replace_if</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::replace_if_&lt; L, C, U &gt; &gt;</td></tr>
<tr class="memdesc:gaa54c43f08dc95c371f1281ee1d106d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all elements <code>A</code> of the list <code>L</code> for which <code>invoke&lt;C,A&gt;::value</code> is <code>true</code> have been replaced with <code>U</code>. <a href="group__transformation.html#gaa54c43f08dc95c371f1281ee1d106d80">More...</a><br /></td></tr>
<tr class="separator:gaa54c43f08dc95c371f1281ee1d106d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb5c3e09e2b1dee384fee44fe54f7df9"><td class="memTemplParams" colspan="2">template&lt;list_like L&gt; </td></tr>
<tr class="memitem:gafb5c3e09e2b1dee384fee44fe54f7df9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gafb5c3e09e2b1dee384fee44fe54f7df9">meta::reverse</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::reverse_&lt; L &gt; &gt;</td></tr>
<tr class="memdesc:gafb5c3e09e2b1dee384fee44fe54f7df9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by reversing the elements in the list <code>L</code>. <a href="group__transformation.html#gafb5c3e09e2b1dee384fee44fe54f7df9">More...</a><br /></td></tr>
<tr class="separator:gafb5c3e09e2b1dee384fee44fe54f7df9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga731ad47dfb1f72563fdad66fa5ae2a1a"><td class="memTemplParams" colspan="2">template&lt;list_like L, typename State , invocable Fn&gt; </td></tr>
<tr class="memitem:ga731ad47dfb1f72563fdad66fa5ae2a1a"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga731ad47dfb1f72563fdad66fa5ae2a1a">meta::reverse_fold</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::reverse_fold_&lt; L, State, Fn &gt; &gt;</td></tr>
<tr class="memdesc:ga731ad47dfb1f72563fdad66fa5ae2a1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by doing a right fold of the list <code>L</code> using binary invocable <code>Fn</code> and initial state <code>State</code>. That is, the <code>State(N)</code> for the list element <code>A(N)</code> is computed by <code>Fn(A(N), State(N+1)) -&gt; State(N)</code>. <a href="group__transformation.html#ga731ad47dfb1f72563fdad66fa5ae2a1a">More...</a><br /></td></tr>
<tr class="separator:ga731ad47dfb1f72563fdad66fa5ae2a1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24714e0a1e7b99a57052a63d815955a7"><td class="memTemplParams" colspan="2">template&lt;list_like L, invocable Fn&gt; </td></tr>
<tr class="memitem:ga24714e0a1e7b99a57052a63d815955a7"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga24714e0a1e7b99a57052a63d815955a7">meta::sort</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::sort_&lt; L, Fn &gt; &gt;</td></tr>
<tr class="memdesc:ga24714e0a1e7b99a57052a63d815955a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> that is sorted according to invocable predicate <code>Fn</code>. <a href="group__transformation.html#ga24714e0a1e7b99a57052a63d815955a7">More...</a><br /></td></tr>
<tr class="separator:ga24714e0a1e7b99a57052a63d815955a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32b72eeac93fde990739bfe3d1729207"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
<tr class="memitem:ga32b72eeac93fde990739bfe3d1729207"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">meta::transform</a> = <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt; detail::transform_&lt; Args... &gt; &gt;</td></tr>
<tr class="memdesc:ga32b72eeac93fde990739bfe3d1729207"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by transforming all the elements in <code>L</code> with the unary invocable <code>Fn</code>. <code>transform</code> can also be called with two lists of the same length and a binary invocable, in which case it returns a new list constructed with the results of calling <code>Fn</code> with each element in the lists, pairwise. <a href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">More...</a><br /></td></tr>
<tr class="separator:ga32b72eeac93fde990739bfe3d1729207"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga386fa55fefb4aa3f4df3227379916839"><td class="memTemplParams" colspan="2">template&lt;list_like ListOfLists&gt; </td></tr>
<tr class="memitem:ga386fa55fefb4aa3f4df3227379916839"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">meta::transpose</a> = <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt; ListOfLists, <a class="el" href="group__list.html#gab4b5da3947303335fc4139f163ed4748">repeat_n</a>&lt; <a class="el" href="group__list.html#ga82704ab3563d63460b7ac1be6c9876c9">size</a>&lt; <a class="el" href="group__list.html#gadd1d8e54275858523926ab20aa88ed0a">front</a>&lt; ListOfLists &gt; &gt;, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, <a class="el" href="structmeta_1_1bind__back.html">bind_back</a>&lt; <a class="el" href="structmeta_1_1quote.html">quote</a>&lt; <a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a> &gt;, <a class="el" href="structmeta_1_1quote.html">quote</a>&lt; <a class="el" href="group__transformation.html#gafee8f315356d19c47069adb56890a920">push_back</a> &gt; &gt; &gt;</td></tr>
<tr class="memdesc:ga386fa55fefb4aa3f4df3227379916839"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a list of lists of types <code>ListOfLists</code>, transpose the elements from the lists. <a href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">More...</a><br /></td></tr>
<tr class="separator:ga386fa55fefb4aa3f4df3227379916839"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga851cff9736691f16f0899eac04839d58"><td class="memTemplParams" colspan="2">template&lt;list_like L&gt; </td></tr>
<tr class="memitem:ga851cff9736691f16f0899eac04839d58"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga851cff9736691f16f0899eac04839d58">meta::unique</a> = <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt; L, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt;, <a class="el" href="group__composition.html#ga945a0c21082eec9a2c7b9b8bda15e580">quote_trait</a>&lt; detail::insert_back_ &gt; &gt;</td></tr>
<tr class="memdesc:ga851cff9736691f16f0899eac04839d58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all duplicate elements have been removed. <a href="group__transformation.html#ga851cff9736691f16f0899eac04839d58">More...</a><br /></td></tr>
<tr class="separator:ga851cff9736691f16f0899eac04839d58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga559fdaee384c3d297b86ab217b26f601"><td class="memTemplParams" colspan="2">template&lt;list_like ListOfLists&gt; </td></tr>
<tr class="memitem:ga559fdaee384c3d297b86ab217b26f601"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#ga559fdaee384c3d297b86ab217b26f601">meta::zip</a> = <a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">transpose</a>&lt; ListOfLists &gt;</td></tr>
<tr class="memdesc:ga559fdaee384c3d297b86ab217b26f601"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a list of lists of types <code>ListOfLists</code>, construct a new list by grouping the elements from the lists pairwise into <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code>s. <a href="group__transformation.html#ga559fdaee384c3d297b86ab217b26f601">More...</a><br /></td></tr>
<tr class="separator:ga559fdaee384c3d297b86ab217b26f601"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad8262b50af24df0244354b25ab025b15"><td class="memTemplParams" colspan="2">template&lt;invocable Fn, list_like ListOfLists&gt; </td></tr>
<tr class="memitem:gad8262b50af24df0244354b25ab025b15"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transformation.html#gad8262b50af24df0244354b25ab025b15">meta::zip_with</a> = <a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a>&lt; <a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">transpose</a>&lt; ListOfLists &gt;, <a class="el" href="group__composition.html#ga5fa0228061e71036b311db6c3d93ab02">uncurry</a>&lt; Fn &gt; &gt;</td></tr>
<tr class="memdesc:gad8262b50af24df0244354b25ab025b15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a list of lists of types <code>ListOfLists</code> and an invocable <code>Fn</code>, construct a new list by calling <code>Fn</code> with the elements from the lists pairwise. <a href="group__transformation.html#gad8262b50af24df0244354b25ab025b15">More...</a><br /></td></tr>
<tr class="separator:gad8262b50af24df0244354b25ab025b15"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >Transformation algorithms. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="gadec7869718bf0ddf69579775156b351d" name="gadec7869718bf0ddf69579775156b351d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadec7869718bf0ddf69579775156b351d">&#9670;&nbsp;</a></span>accumulate</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename State , invocable Fn&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gadec7869718bf0ddf69579775156b351d">meta::accumulate</a> = typedef <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt;L, State, Fn&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>An alias for <code><a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff" title="Return a new meta::list constructed by doing a left fold of the list L using binary invocable Fn and ...">meta::fold</a></code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="ga5e408243147a04c1ca2742211e3c0982" name="ga5e408243147a04c1ca2742211e3c0982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5e408243147a04c1ca2742211e3c0982">&#9670;&nbsp;</a></span>cartesian_product</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like ListOfLists&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga5e408243147a04c1ca2742211e3c0982">meta::cartesian_product</a> = typedef <a class="el" href="group__transformation.html#ga731ad47dfb1f72563fdad66fa5ae2a1a">reverse_fold</a>&lt;ListOfLists, <a class="el" href="structmeta_1_1list.html">list</a>&lt;<a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, <a class="el" href="group__composition.html#ga945a0c21082eec9a2c7b9b8bda15e580">quote_trait</a>&lt;detail::cartesian_product_fn&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Given a list of lists <code>ListOfLists</code>, return a new list of lists that is the Cartesian Product. Like the <code>sequence</code> function from the Haskell Prelude. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N * M)</code>, where <code>N</code> is the size of the outer list, and <code>M</code> is the size of the inner lists. </dd></dl>
</div>
</div>
<a id="ga8d0d695134bd6b94698ae4f1c0d2f553" name="ga8d0d695134bd6b94698ae4f1c0d2f553"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8d0d695134bd6b94698ae4f1c0d2f553">&#9670;&nbsp;</a></span>concat_</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like ... Ls&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga8d0d695134bd6b94698ae4f1c0d2f553">meta::concat_</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::concat_&lt;Ls...&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Concatenates several lists into a single list. </p>
<dl class="section pre"><dt>Precondition</dt><dd>The parameters must all be instantiations of <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code>. </dd></dl>
<dl class="section user"><dt>Complexity</dt><dd><code>O(L)</code> where <code>L</code> is the number of lists in the list of lists. </dd></dl>
</div>
</div>
<a id="ga4883188d34dd23dc949f737c17a1a317" name="ga4883188d34dd23dc949f737c17a1a317"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4883188d34dd23dc949f737c17a1a317">&#9670;&nbsp;</a></span>drop</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, integral N&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga4883188d34dd23dc949f737c17a1a317">meta::drop</a> = typedef <a class="el" href="group__transformation.html#gac8f2eb92a10b78f432a4430bc4d05ba9">drop_c</a>&lt;L, N::type::value&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first <code>N</code> elements from <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(1)</code>. </dd></dl>
</div>
</div>
<a id="gac8f2eb92a10b78f432a4430bc4d05ba9" name="gac8f2eb92a10b78f432a4430bc4d05ba9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac8f2eb92a10b78f432a4430bc4d05ba9">&#9670;&nbsp;</a></span>drop_c</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, std::size_t N&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gac8f2eb92a10b78f432a4430bc4d05ba9">meta::drop_c</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::drop_&lt;L, N&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first <code>N</code> elements from <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(1)</code>. </dd></dl>
</div>
</div>
<a id="gac34d21074558f4ddc07a6206d5065619" name="gac34d21074558f4ddc07a6206d5065619"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac34d21074558f4ddc07a6206d5065619">&#9670;&nbsp;</a></span>filter</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename L , typename Pred &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gac34d21074558f4ddc07a6206d5065619">meta::filter</a> = typedef <a class="el" href="group__transformation.html#gae8b919ad4c2cfe9b0fc7549cedae5e37">join</a>&lt;<a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a>&lt;L, detail::filter_&lt;Pred&gt; &gt;&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Returns a new <a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a> where only those elements of <code>L</code> that satisfy the Callable <code>Pred</code> such that <code>invoke&lt;Pred,A&gt;::value</code> is <code>true</code> are present. That is, those elements that don't satisfy the <code>Pred</code> are "removed". </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="gace05917716be9857eb49b847b17548ff" name="gace05917716be9857eb49b847b17548ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace05917716be9857eb49b847b17548ff">&#9670;&nbsp;</a></span>fold</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename State , invocable Fn&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">meta::fold</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::fold_&lt;L, State, Fn&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by doing a left fold of the list <code>L</code> using binary invocable <code>Fn</code> and initial state <code>State</code>. That is, the <code>State(N)</code> for the list element <code>A(N)</code> is computed by <code>Fn(State(N-1), A(N)) -&gt; State(N)</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="gae8b919ad4c2cfe9b0fc7549cedae5e37" name="gae8b919ad4c2cfe9b0fc7549cedae5e37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae8b919ad4c2cfe9b0fc7549cedae5e37">&#9670;&nbsp;</a></span>join</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like ListOfLists&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gae8b919ad4c2cfe9b0fc7549cedae5e37">meta::join</a> = typedef <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt;<a class="el" href="structmeta_1_1quote.html">quote</a>&lt;concat&gt;, ListOfLists&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Joins a list of lists into a single list. </p>
<dl class="section pre"><dt>Precondition</dt><dd>The parameter must be an instantiation of <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a>&lt;T</code>...&gt; where each <code>T</code> is itself an instantiation of <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code>. </dd></dl>
<dl class="section user"><dt>Complexity</dt><dd><code>O(L)</code> where <code>L</code> is the number of lists in the list of lists. </dd></dl>
</div>
</div>
<a id="ga15c1c01dfb904208e7d71d660caff4ca" name="ga15c1c01dfb904208e7d71d660caff4ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga15c1c01dfb904208e7d71d660caff4ca">&#9670;&nbsp;</a></span>partition</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, invocable Fn&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga15c1c01dfb904208e7d71d660caff4ca">meta::partition</a> = typedef <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt;L, <a class="el" href="group__list.html#gafd1e131e4e3ae4b0ae9bd3d2ec3a5f74">pair</a>&lt;<a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt;, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, detail::partition_&lt;Fn&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Returns a pair of lists, where the elements of <code>L</code> that satisfy the invocable <code>Fn</code> such that <code>invoke&lt;Fn,A&gt;::value</code> is <code>true</code> are present in the first list and the rest are in the second. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="gae161f030face244119ce54815630d878" name="gae161f030face244119ce54815630d878"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae161f030face244119ce54815630d878">&#9670;&nbsp;</a></span>pop_front</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gae161f030face244119ce54815630d878">meta::pop_front</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::pop_front_&lt;L&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by removing the first element from the front of <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(1)</code>. </dd></dl>
</div>
</div>
<a id="gafee8f315356d19c47069adb56890a920" name="gafee8f315356d19c47069adb56890a920"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafee8f315356d19c47069adb56890a920">&#9670;&nbsp;</a></span>push_back</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename... Ts&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gafee8f315356d19c47069adb56890a920">meta::push_back</a> = typedef <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt;<a class="el" href="structmeta_1_1bind__back.html">bind_back</a>&lt;<a class="el" href="structmeta_1_1quote.html">quote</a>&lt;<a class="el" href="structmeta_1_1list.html">list</a>&gt;, Ts...&gt;, L&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by adding the element <code>T</code> to the back of <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(1)</code>. </dd></dl>
<dl class="section note"><dt>Note</dt><dd><code>pop_back</code> not provided because it cannot be made to meet the complexity guarantees one would expect. </dd></dl>
</div>
</div>
<a id="ga26c72d739945496ab36891f495c3ca98" name="ga26c72d739945496ab36891f495c3ca98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga26c72d739945496ab36891f495c3ca98">&#9670;&nbsp;</a></span>push_front</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename... Ts&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga26c72d739945496ab36891f495c3ca98">meta::push_front</a> = typedef <a class="el" href="group__invocation.html#ga2f71f17b6a6b48ea99134ddabd0e19a9">apply</a>&lt;<a class="el" href="structmeta_1_1bind__front.html">bind_front</a>&lt;<a class="el" href="structmeta_1_1quote.html">quote</a>&lt;<a class="el" href="structmeta_1_1list.html">list</a>&gt;, Ts...&gt;, L&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by adding the element <code>T</code> to the front of <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(1)</code>. </dd></dl>
</div>
</div>
<a id="ga44e0ae4574066da2f71dd72ec245da23" name="ga44e0ae4574066da2f71dd72ec245da23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga44e0ae4574066da2f71dd72ec245da23">&#9670;&nbsp;</a></span>replace</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename T , typename U &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga44e0ae4574066da2f71dd72ec245da23">meta::replace</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::replace_&lt;L, T, U&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all instances of type <code>T</code> have been replaced with <code>U</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="gaa54c43f08dc95c371f1281ee1d106d80" name="gaa54c43f08dc95c371f1281ee1d106d80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa54c43f08dc95c371f1281ee1d106d80">&#9670;&nbsp;</a></span>replace_if</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename C , typename U &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gaa54c43f08dc95c371f1281ee1d106d80">meta::replace_if</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::replace_if_&lt;L, C, U&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all elements <code>A</code> of the list <code>L</code> for which <code>invoke&lt;C,A&gt;::value</code> is <code>true</code> have been replaced with <code>U</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="gafb5c3e09e2b1dee384fee44fe54f7df9" name="gafb5c3e09e2b1dee384fee44fe54f7df9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafb5c3e09e2b1dee384fee44fe54f7df9">&#9670;&nbsp;</a></span>reverse</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gafb5c3e09e2b1dee384fee44fe54f7df9">meta::reverse</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::reverse_&lt;L&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> by reversing the elements in the list <code>L</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="ga731ad47dfb1f72563fdad66fa5ae2a1a" name="ga731ad47dfb1f72563fdad66fa5ae2a1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga731ad47dfb1f72563fdad66fa5ae2a1a">&#9670;&nbsp;</a></span>reverse_fold</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, typename State , invocable Fn&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga731ad47dfb1f72563fdad66fa5ae2a1a">meta::reverse_fold</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::reverse_fold_&lt;L, State, Fn&gt; &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by doing a right fold of the list <code>L</code> using binary invocable <code>Fn</code> and initial state <code>State</code>. That is, the <code>State(N)</code> for the list element <code>A(N)</code> is computed by <code>Fn(A(N), State(N+1)) -&gt; State(N)</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="ga24714e0a1e7b99a57052a63d815955a7" name="ga24714e0a1e7b99a57052a63d815955a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga24714e0a1e7b99a57052a63d815955a7">&#9670;&nbsp;</a></span>sort</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L, invocable Fn&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga24714e0a1e7b99a57052a63d815955a7">meta::sort</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::sort_&lt;L, Fn&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> that is sorted according to invocable predicate <code>Fn</code>. </p>
<dl class="section user"><dt>Complexity</dt><dd>Expected: <code>O(N log N)</code> Worst case: <code>O(N^2)</code>. <div class="fragment"><div class="line"><span class="keyword">using </span>L0 = <a class="code hl_struct" href="structmeta_1_1list.html">list&lt;char[5], char[3], char[2], char[6], char[1], char[5], char[10]&gt;</a>;</div>
<div class="line"><span class="keyword">using </span>L1 = <a class="code hl_typedef" href="group__transformation.html#ga24714e0a1e7b99a57052a63d815955a7">meta::sort&lt;L0, lambda&lt;_a, _b, lazy::less&lt;lazy::sizeof_&lt;_a&gt;</a>, <a class="code hl_struct" href="structmeta_1_1defer.html">lazy::sizeof_&lt;_b&gt;</a>&gt;&gt;&gt;;</div>
<div class="line"><span class="keyword">static_assert</span>(std::is_same_v&lt;L1, list&lt;char[1], char[2], char[3], char[5], char[5], char[6], char[10]&gt;&gt;, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="ttc" id="agroup__transformation_html_ga24714e0a1e7b99a57052a63d815955a7"><div class="ttname"><a href="group__transformation.html#ga24714e0a1e7b99a57052a63d815955a7">meta::sort</a></div><div class="ttdeci">_t&lt; detail::sort_&lt; L, Fn &gt; &gt; sort</div><div class="ttdoc">Return a new meta::list that is sorted according to invocable predicate Fn.</div><div class="ttdef"><b>Definition:</b> meta.hpp:3277</div></div>
<div class="ttc" id="astructmeta_1_1defer_html"><div class="ttname"><a href="structmeta_1_1defer.html">meta::defer</a></div><div class="ttdoc">A wrapper that defers the instantiation of a template C with type parameters Ts in a lambda or let ex...</div><div class="ttdef"><b>Definition:</b> meta.hpp:787</div></div>
<div class="ttc" id="astructmeta_1_1list_html"><div class="ttname"><a href="structmeta_1_1list.html">meta::list</a></div><div class="ttdoc">A list of types.</div><div class="ttdef"><b>Definition:</b> meta.hpp:1684</div></div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a id="ga32b72eeac93fde990739bfe3d1729207" name="ga32b72eeac93fde990739bfe3d1729207"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga32b72eeac93fde990739bfe3d1729207">&#9670;&nbsp;</a></span>transform</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">meta::transform</a> = typedef <a class="el" href="group__invocation.html#ga08e2193149605769f6052795ff0a87b1">_t</a>&lt;detail::transform_&lt;Args...&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> constructed by transforming all the elements in <code>L</code> with the unary invocable <code>Fn</code>. <code>transform</code> can also be called with two lists of the same length and a binary invocable, in which case it returns a new list constructed with the results of calling <code>Fn</code> with each element in the lists, pairwise. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N)</code>. </dd></dl>
</div>
</div>
<a id="ga386fa55fefb4aa3f4df3227379916839" name="ga386fa55fefb4aa3f4df3227379916839"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga386fa55fefb4aa3f4df3227379916839">&#9670;&nbsp;</a></span>transpose</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like ListOfLists&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">meta::transpose</a> = typedef <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt;ListOfLists, <a class="el" href="group__list.html#gab4b5da3947303335fc4139f163ed4748">repeat_n</a>&lt;<a class="el" href="group__list.html#ga82704ab3563d63460b7ac1be6c9876c9">size</a>&lt;<a class="el" href="group__list.html#gadd1d8e54275858523926ab20aa88ed0a">front</a>&lt;ListOfLists&gt; &gt;, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt; &gt;, <a class="el" href="structmeta_1_1bind__back.html">bind_back</a>&lt;<a class="el" href="structmeta_1_1quote.html">quote</a>&lt;<a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a>&gt;, <a class="el" href="structmeta_1_1quote.html">quote</a>&lt;<a class="el" href="group__transformation.html#gafee8f315356d19c47069adb56890a920">push_back</a>&gt; &gt;&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Given a list of lists of types <code>ListOfLists</code>, transpose the elements from the lists. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N * M)</code>, where <code>N</code> is the size of the outer list, and <code>M</code> is the size of the inner lists. </dd></dl>
</div>
</div>
<a id="ga851cff9736691f16f0899eac04839d58" name="ga851cff9736691f16f0899eac04839d58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga851cff9736691f16f0899eac04839d58">&#9670;&nbsp;</a></span>unique</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like L&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga851cff9736691f16f0899eac04839d58">meta::unique</a> = typedef <a class="el" href="group__transformation.html#gace05917716be9857eb49b847b17548ff">fold</a>&lt;L, <a class="el" href="structmeta_1_1list.html">list</a>&lt;&gt;, <a class="el" href="group__composition.html#ga945a0c21082eec9a2c7b9b8bda15e580">quote_trait</a>&lt;detail::insert_back_&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Return a new <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code> where all duplicate elements have been removed. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N^2)</code>. </dd></dl>
</div>
</div>
<a id="ga559fdaee384c3d297b86ab217b26f601" name="ga559fdaee384c3d297b86ab217b26f601"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga559fdaee384c3d297b86ab217b26f601">&#9670;&nbsp;</a></span>zip</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;list_like ListOfLists&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#ga559fdaee384c3d297b86ab217b26f601">meta::zip</a> = typedef <a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">transpose</a>&lt;ListOfLists&gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Given a list of lists of types <code>ListOfLists</code>, construct a new list by grouping the elements from the lists pairwise into <code><a class="el" href="structmeta_1_1list.html" title="A list of types.">meta::list</a></code>s. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N * M)</code>, where <code>N</code> is the size of the outer list, and <code>M</code> is the size of the inner lists. </dd></dl>
</div>
</div>
<a id="gad8262b50af24df0244354b25ab025b15" name="gad8262b50af24df0244354b25ab025b15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad8262b50af24df0244354b25ab025b15">&#9670;&nbsp;</a></span>zip_with</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;invocable Fn, list_like ListOfLists&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="group__transformation.html#gad8262b50af24df0244354b25ab025b15">meta::zip_with</a> = typedef <a class="el" href="group__transformation.html#ga32b72eeac93fde990739bfe3d1729207">transform</a>&lt;<a class="el" href="group__transformation.html#ga386fa55fefb4aa3f4df3227379916839">transpose</a>&lt;ListOfLists&gt;, <a class="el" href="group__composition.html#ga5fa0228061e71036b311db6c3d93ab02">uncurry</a>&lt;Fn&gt; &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="meta_8hpp.html">meta/meta.hpp</a>&gt;</code></p>
<p>Given a list of lists of types <code>ListOfLists</code> and an invocable <code>Fn</code>, construct a new list by calling <code>Fn</code> with the elements from the lists pairwise. </p>
<dl class="section user"><dt>Complexity</dt><dd><code>O(N * M)</code>, where <code>N</code> is the size of the outer list, and <code>M</code> is the size of the inner lists. </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </li>
</ul>
</div>
</body>
</html>