docs: "API Reference" support added

This commit is contained in:
Mateusz Pusz
2024-09-07 15:46:13 +02:00
parent 40dc07a42c
commit 1b4f451f90
32 changed files with 2090 additions and 0 deletions

74
docs/api.md Normal file
View File

@ -0,0 +1,74 @@
---
hide:
- navigation
- toc
---
<script src="../javascripts/jquery.min.js"></script>
<script src="../javascripts/iframeResizer.min.js"></script>
<iframe id="apiIframe" style="width: 100%; border: none;"></iframe>
<script>
// injects scripts to the iframe source code
$('#apiIframe').on('load', function() {
body = $(this).contents().find('body');
body.append('<scr' + 'ipt src="../../javascripts/iframeResizer.contentWindow.min.js"></scr' + 'ipt>');
body.append('<scr' + 'ipt>' +
'var links = document.querySelectorAll("a");' +
'for (var i = 0; i < links.length; i++) {' +
' links[i].addEventListener("click", whichLinkWasClicked);' +
'}' +
'' +
'function whichLinkWasClicked(evt) {' +
' window.parentIFrame.sendMessage(evt.target.href);' +
' evt.preventDefault();' +
'}' +
'</scr' + 'ipt>');
});
// reloads the window with the content when a user navigates over the browser's history
function locationHashChanged() {
window.location.reload();
}
window.onhashchange = locationHashChanged;
apiIframe = document.getElementById('apiIframe');
hash = window.location.hash;
if (hash.length == 0) {
// sets default hash for the API Reference
hash = "#full";
history.pushState(null, "", hash);
}
// set the iframe source based on the hash in the URL
if (hash.startsWith("#wg21.link/")) {
apiIframe.src = "https://" + hash.slice(1);
apiIframe.height = 900;
}
else
apiIframe.src = "gen/" + hash.slice(1) + ".html";
// receives content height from the subpage displayed in the iframe
// works only for the pages in the same domain as the main docs
iFrameResize({
scrolling: "yes",
// obtains the link URL clicked in the subpage
onMessage: function(messageData) {
url = messageData.message;
if (url.startsWith("https://wg21.link/")) {
hash = '#' + messageData.message.replace("https://", "");
}
else {
pos = messageData.message.indexOf('#');
if(pos == -1) {
pos = messageData.message.lastIndexOf('/');
}
hash = '#' + messageData.message.slice(pos + 1);
}
history.pushState(null, "", hash);
window.location.reload();
}
},'#apiIframe')
</script>

1343
docs/api/gen/14882.css Normal file

File diff suppressed because it is too large Load Diff

8
docs/api/gen/colored.css Normal file
View File

@ -0,0 +1,8 @@
div.example { display: inline; color: #bb00bb; }
div.note { display: inline; color: #bb00bb; }
div.exampleBody { display: inline; background-color: inherit; }
div.noteBody { display: inline; background-color: inherit; }
a.example_link { text-decoration: none; color: inherit; }
a.note_link { text-decoration: none; color: inherit; }

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>[contents]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref' href='requirements#contents'>[requirements]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>3.2.1</a> Library contents <a class='abbr_ref'>[contents]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L47'>#</a></div><div id='1.sentence-1' class='sentence'>Whenever a name is qualified with <span class='texttt'>X<span class='operator'>&#x200b;::&#x200b;</span></span>, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>X<span class='operator'>&#x200b;::&#x200b;</span></span> is meant<a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.example-1' class='example'>[&nbsp;<a class='example_link' href='#1.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <div id='1.sentence-2' class='sentence'>When <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is mentioned, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is meant<a class='hidden_link' href='#1.sentence-2'>.</a></div>&nbsp;<i>end example</i></div>&nbsp;]</div> </div></div></body></html>

View File

@ -0,0 +1,8 @@
div.example { display: inline; }
div.note { display: inline; }
div.exampleBody { display: inline; }
div.noteBody { display: inline; }
a.example_link { text-decoration: none; color: inherit; }
a.note_link { text-decoration: none; color: inherit; }

1
docs/api/gen/fig.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Figures</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1>List of Figures <a href='./#fig' class='abbr_ref'>[fig]</a></h1></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Footnotes</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1>List of Footnotes</h1></div></body></html>

476
docs/api/gen/full.html Normal file
View File

@ -0,0 +1,476 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<title>JEGP Library</title>
<meta charset='UTF-8' />
<link rel='stylesheet' type='text/css' href='14882.css' />
<link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded' />
<link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored' />
<link rel='icon' href='icon.png' />
</head>
<body>
<div class='wrapper'>
<div id='scope' class='section'>
<h1><a class='secnum' style='min-width:73pt'>1</a> Scope <a class='abbr_ref' href='./#scope'>[scope]</a></h1>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='scope#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L4'>#</a>
</div>
<div id='scope-1.sentence-1' class='sentence'>This document describes the contents of the <a class='hidden_link'
href='#def:JEGP_library' id='def:JEGP_library'><i>JEGP library</i></a><a class='hidden_link'
href='#scope-1.sentence-1'>.</a></div>
</div>
</div>
<div id='refs' class='section'>
<h1><a class='secnum' style='min-width:73pt'>2</a> References <a class='abbr_ref' href='./#refs'>[refs]</a></h1>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='refs#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L9'>#</a>
</div>
<div id='refs-1.sentence-1' class='sentence'>The following documents are referred to in the text
in such a way that some or all of their content
constitutes requirements of this document<a class='hidden_link' href='#refs-1.sentence-1'>.</a></div>
<ul class='itemize'>
<li id='refs-1.1'>
<div class='marginalizedparent' style='left:-7em'><a class='marginalized' href='#refs-1.1'>(1.1)</a></div>
<div id='refs-1.1.sentence-1' class='sentence'>ISO/IEC 14882:2020, <span class='textit'>Programming
Languages — C++</span></div>
</li>
</ul>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='refs#2'>2</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L18'>#</a>
</div>
<div id='refs-2.sentence-1' class='sentence'>ISO/IEC 14882 is herein called the <a class='hidden_link'
href='#def:C++_Standard' id='def:C++_Standard'><i>C++ Standard</i></a><a class='hidden_link'
href='#refs-2.sentence-1'>.</a></div>
</div>
</div>
<div id='intro' class='section'>
<h1><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a>
</h1>
<div id='intro.general' class='section'>
<h2><a class='secnum' style='min-width:88pt'>3.1</a> General <a class='abbr_ref'
href='intro.general'>[intro.general]</a></h2>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='intro.general#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L25'>#</a>
</div>
<div id='intro.general-1.sentence-1' class='sentence'>The library specification subsumes the C++ Standard's <a
href="https://wg21.link/library">[library]</a>,
assumingly amended to the context of this library<a class='hidden_link'
href='#intro.general-1.sentence-1'>.</a></div>
<div id='intro.general-1.example-1' class='example'>[&nbsp;<a class='example_link'
href='#intro.general-1.example-1'><span class='textit'>Example</span></a>
<div class='exampleBody'><span class='textit'>:</span>
<ul class='itemize'>
<li>
<div id='intro.general-1.sentence-1' class='sentence'>Per C++ Standard's <a
href="https://wg21.link/namespace.future">[namespace.future]</a>, <span class='texttt'><span
class='operator'>&#x200b;::&#x200b;</span>jegp2</span> is reserved<a class='hidden_link'
href='#intro.general-1.sentence-1'>.</a></div>
</li>
<li>
<div id='intro.general-1.sentence-1' class='sentence'>Per C++ Standard's <a
href="https://wg21.link/contents">[contents]</a>#3, a name <span class='texttt'>x</span> means
<span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>jegp<span
class='operator'>&#x200b;::&#x200b;</span>x</span><a class='hidden_link'
href='#intro.general-1.sentence-1'>.</a>
</div>
</li>
</ul>&nbsp;<i>end example</i>
</div>&nbsp;]
</div>
<div id='intro.general-1.sentence-2' class='sentence'>
The following subclauses describe additions to it<a class='hidden_link'
href='#intro.general-1.sentence-2'>.</a></div>
<div class='numberedTable' id='tab:library.categories'>Table <a href='#tab:library.categories'>1</a>: Library
categories &emsp;&ensp;[tab:library.categories]<br>
<table>
<tr class='rowsep'>
<td class='left'>
<div id='intro.general-1.sentence-3' class='sentence'><b>Clause</b></div>
</td>
<td class='left'>
<div id='intro.general-1.sentence-4' class='sentence'><b>Category</b></div>
</td>
</tr>
<tr class='capsep'>
<td class='left'>
<div id='intro.general-1.sentence-5' class='sentence'><a href='#utilities'>[utilities]</a></div>
</td>
<td class='left'>
<div id='intro.general-1.sentence-6' class='sentence'>General utilities library</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id='requirements' class='section'>
<h2><a class='secnum' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref'
href='requirements'>[requirements]</a></h2>
<div id='contents' class='section'>
<h3><a class='secnum' style='min-width:103pt'>3.2.1</a> Library contents <a class='abbr_ref'
href='contents'>[contents]</a></h3>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='contents#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L47'>#</a>
</div>
<div id='contents-1.sentence-1' class='sentence'>Whenever a name is qualified with <span
class='texttt'>X<span class='operator'>&#x200b;::&#x200b;</span></span>, <span class='texttt'><span
class='operator'>&#x200b;::&#x200b;</span>X<span class='operator'>&#x200b;::&#x200b;</span></span> is
meant<a class='hidden_link' href='#contents-1.sentence-1'>.</a></div>
<div id='contents-1.example-1' class='example'>[&nbsp;<a class='example_link'
href='#contents-1.example-1'><span class='textit'>Example</span></a>
<div class='exampleBody'><span class='textit'>:</span>
<div id='contents-1.sentence-2' class='sentence'>When <span class='texttt'>std<span
class='operator'>&#x200b;::&#x200b;</span>Y</span> is mentioned, <span class='texttt'><span
class='operator'>&#x200b;::&#x200b;</span>std<span
class='operator'>&#x200b;::&#x200b;</span>Y</span> is meant<a class='hidden_link'
href='#contents-1.sentence-2'>.</a></div>&nbsp;<i>end example</i>
</div>&nbsp;]
</div>
</div>
</div>
<div id='reserved.names' class='section'>
<h3><a class='secnum' style='min-width:103pt'>3.2.2</a> Reserved names <a class='abbr_ref'
href='reserved.names'>[reserved.names]</a></h3>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='reserved.names#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L55'>#</a>
</div>
<div id='reserved.names-1.sentence-1' class='sentence'>The JEGP library reserves macro names starting with
<span class='texttt'>JEGP_&shy;</span><a class='hidden_link' href='#reserved.names-1.sentence-1'>.</a>
</div>
</div>
</div>
</div>
</div>
<div id='utilities' class='section'>
<h1><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref'
href='./#utilities'>[utilities]</a></h1>
<div id='utilities.general' class='section'>
<h2><a class='secnum' style='min-width:88pt'>4.1</a> General <a class='abbr_ref'
href='utilities.general'>[utilities.general]</a></h2>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='utilities.general#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L6'>#</a>
</div>
<div id='utilities.general-1.sentence-1' class='sentence'>This clause describes generally useful utilities<a
class='hidden_link' href='#utilities.general-1.sentence-1'>.</a></div>
<div id='utilities.general-1.sentence-2' class='sentence'>These utilities are summarized in Table <a
href='#tab:utilities.summary'>2</a><a class='hidden_link' href='#utilities.general-1.sentence-2'>.</a>
</div>
<div class='numberedTable' id='tab:utilities.summary'>Table <a href='#tab:utilities.summary'>2</a>: General
utilities library summary &emsp;&ensp;[tab:utilities.summary]<br>
<table>
<tr class='rowsep'>
<td class='empty left'></td>
<td class='left'>
<div id='utilities.general-1.sentence-3' class='sentence'><b>Subclause</b></div>
</td>
<td class='left'>
<div id='utilities.general-1.sentence-4' class='sentence'><b>Header</b></div>
</td>
</tr>
<tr class='capsep'>
<td class='left'>
<div id='utilities.general-1.sentence-5' class='sentence'><a href='#utility'>[utility]</a></div>
</td>
<td class='left'>
<div id='utilities.general-1.sentence-6' class='sentence'>Utility components</div>
</td>
<td class='left'>
<div id='utilities.general-1.sentence-7' class='sentence'><span class='texttt'><span
class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span
class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id='utility' class='section'>
<h2><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref'
href='utility'>[utility]</a></h2>
<div id='utility.syn' class='section'>
<h3><a class='secnum' style='min-width:103pt'>4.2.1</a> Header <span
class='texttt'>&lt;jegp/utility.hpp&gt;</span> synopsis <a class='abbr_ref'
href='utility.syn'>[utility.syn]</a></h3>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='utility.syn#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L18'>#</a>
</div>
<div id='utility.syn-1.sentence-1' class='sentence'>The header <span class='indexparent'><a class='index'
id=':<jegp/utility.hpp>'></a></span><span class='texttt'><span
class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span
class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span>
contains some basic constructs<a class='hidden_link' href='#utility.syn-1.sentence-1'>.</a></div><span
class='indexparent'><a class='index' id=':<jegp/utility.hpp>_'></a></span>
<pre class='codeblock'>
<span class='keyword'>namespace</span> jegp
<span class='curlybracket'>{</span>
<span class='comment'>// <a href='#utility.underlying'>[utility.underlying]</a>, <span class='tcode_in_codeblock'>underlying</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#static.downcast'>[static.downcast]</a>, <span class='tcode_in_codeblock'>static_&shy;downcast</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#hash.combine'>[hash.combine]</a>, <span class='tcode_in_codeblock'>hash_&shy;combine</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
<span class='curlybracket'>}</span> <span class='comment'>// namespace jegp</span>
</pre>
</div>
</div>
<div id='utility.underlying' class='section'>
<h3><a class='secnum' style='min-width:103pt'>4.2.2</a> <span class='texttt'>underlying</span> <a
class='abbr_ref' href='utility.underlying'>[utility.underlying]</a></h3><span class='indexparent'><a
class='index' id='lib:underlying'></a></span>
<div class='itemdecl' id='utility.underlying-itemdecl:1'>
<div class='marginalizedparent'><a class='itemDeclLink' href='#utility.underlying-itemdecl:1'>🔗</a></div>
<code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code>
</div>
<div class='itemdescr'></div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='utility.underlying#1'>1</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L50'>#</a>
</div>
<div id='utility.underlying-1.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>is_&shy;enum_&shy;v<span
class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span></span> is <span
class='texttt'><span class='literal'>true</span></span><a class='hidden_link'
href='#utility.underlying-1.sentence-1'>.</a>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='utility.underlying#2'>2</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L54'>#</a>
</div>
<div id='utility.underlying-2.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span
class='anglebracket'>&lt;</span>std<span
class='operator'>&#x200b;::&#x200b;</span>underlying_&shy;type_&shy;t<span
class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span><span
class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>e<span
class='parenthesis'>)</span></span><a class='hidden_link'
href='#utility.underlying-2.sentence-1'>.</a>
</div>
</div>
</div>
</div>
<div id='static.downcast' class='section'>
<h3><a class='secnum' style='min-width:103pt'>4.2.3</a> <span class='texttt'>static_&shy;downcast</span> <a
class='abbr_ref' href='static.downcast'>[static.downcast]</a></h3>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='static.downcast#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L61'>#</a>
</div>
<div id='static.downcast-1.sentence-1' class='sentence'>A <span class='texttt'><span
class='keyword'>static_&shy;cast</span></span> that performs a downcast<a class='hidden_link'
href='#static.downcast-1.sentence-1'>.</a></div> <span class='indexparent'><a class='index'
id='lib:static_downcast'></a></span>
</div>
<div class='itemdecl' id='static.downcast-itemdecl:1'>
<div class='marginalizedparent'><a class='itemDeclLink' href='#static.downcast-itemdecl:1'>🔗</a></div><code
class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code>
</div>
<div class='itemdescr'></div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='static.downcast#2'>2</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L71'>#</a>
</div>
<div id='static.downcast-2.sentence-1' class='sentence'>Let <span class='texttt'><span
class='textit'>derived-ref</span></span> be
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span
class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span><span
class='parenthesis'>(</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span
class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span><span
class='parenthesis'>(</span>base<span class='parenthesis'>)</span><span
class='parenthesis'>)</span></span><a class='hidden_link' href='#static.downcast-2.sentence-1'>.</a>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='static.downcast#3'>3</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L75'>#</a>
</div>
<div id='static.downcast-3.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'>
<li id='static.downcast-3.1'>
<div class='marginalizedparent' style='left:-10em'><a class='marginalized'
href='#static.downcast-3.1'>(3.1)</a></div><span class='texttt'>DerivedRef</span> is a reference
type,
</li>
<li id='static.downcast-3.2'>
<div class='marginalizedparent' style='left:-10em'><a class='marginalized'
href='#static.downcast-3.2'>(3.2)</a></div><span class='texttt'>std<span
class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span
class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span></span> is
derived from
<span class='texttt'>std<span
class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span
class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span></span>, and
</li>
<li id='static.downcast-3.3'>
<div class='marginalizedparent' style='left:-10em'><a class='marginalized'
href='#static.downcast-3.3'>(3.3)</a></div><span class='texttt'><span
class='textit'>derived-ref</span></span> is well-formed<a class='hidden_link'
href='#static.downcast-3.sentence-1'>.</a>
</li>
</ul>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='static.downcast#4'>4</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L87'>#</a>
</div>
<div id='static.downcast-4.sentence-1' class='sentence'><span class='textit'>Preconditions:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span> has well-defined behavior<a
class='hidden_link' href='#static.downcast-4.sentence-1'>.</a>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='static.downcast#5'>5</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L91'>#</a>
</div>
<div id='static.downcast-5.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span><a class='hidden_link'
href='#static.downcast-5.sentence-1'>.</a>
</div>
</div>
</div>
</div>
<div id='hash.combine' class='section'>
<h3><a class='secnum' style='min-width:103pt'>4.2.4</a> <span class='texttt'>hash_&shy;combine</span> <a
class='abbr_ref' href='hash.combine'>[hash.combine]</a></h3>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='hash.combine#1'>1</a></div>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L98'>#</a>
</div>
<div id='hash.combine-1.sentence-1' class='sentence'>Insipred by <span class='texttt'>Boost<span
class='operator'>.</span>ContainerHash</span><a class='hidden_link'
href='#hash.combine-1.sentence-1'>.</a></div>
<div id='hash.combine-1.sentence-2' class='sentence'>Useful in the specializations of <span
class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash</span>
whose <span class='texttt'>Key</span>'s salient parts consist of two or more objects<a class='hidden_link'
href='#hash.combine-1.sentence-2'>.</a></div> <span class='indexparent'><a class='index'
id='lib:hash_combine'></a></span>
</div>
<div class='itemdecl' id='hash.combine-itemdecl:1'>
<div class='marginalizedparent'><a class='itemDeclLink' href='#hash.combine-itemdecl:1'>🔗</a></div><code
class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
</code>
</div>
<div class='itemdescr'></div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='hash.combine#2'>2</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L110'>#</a>
</div>
<div id='hash.combine-2.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'>
<li id='hash.combine-2.1'>
<div class='marginalizedparent' style='left:-10em'><a class='marginalized'
href='#hash.combine-2.1'>(2.1)</a></div><span class="mjx-chtml"><span class="mjx-math"><span
class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span
class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R"
style="padding-top: 0.519em; padding-bottom: 0.519em;"><span
class='keyword'>sizeof</span><span class='operator'>.</span><span
class='operator'>.</span><span class='operator'>.</span><span
class='parenthesis'>(</span>Args<span
class='parenthesis'>)</span></span></span></span></span><span
class="mjx-mo MJXc-space3"><span class="mjx-char MJXc-TeX-main-R"
style="padding-top: 0.372em; padding-bottom: 0.446em;"></span></span><span
class="mjx-texatom MJXc-space3"><span class="mjx-mrow"></span></span><span
class="mjx-mn"><span class="mjx-char MJXc-TeX-main-R"
style="padding-top: 0.372em; padding-bottom: 0.372em;">2</span></span></span></span></span>
and
</li>
<li id='hash.combine-2.2'>
<div class='marginalizedparent' style='left:-10em'><a class='marginalized'
href='#hash.combine-2.2'>(2.2)</a></div><span class='texttt'>std<span
class='operator'>&#x200b;::&#x200b;</span>hash<span class='anglebracket'>&lt;</span>T<span
class='anglebracket'>&gt;</span></span> is enabled (C++ Standard's <a
href="https://wg21.link/unord.hash">[unord.hash]</a>)
for all <span class='texttt'>T</span> in <span class='texttt'>Args</span><a class='hidden_link'
href='#hash.combine-2.sentence-1'>.</a>
</li>
</ul>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='hash.combine#3'>3</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L120'>#</a>
</div>
<div id='hash.combine-3.sentence-1' class='sentence'><span class='textit'>Effects:</span>
Equivalent to:
<pre class='codeblock'>
std<span class='operator'>::</span>size_t seed<span class='curlybracket'>{</span><span class='literal'>0</span><span class='curlybracket'>}</span>;
<span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span>, <span class='parenthesis'>(</span>seed <span class='operator'>^</span><span class='operator'>=</span> std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>6</span><span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='literal'>2</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</pre>
</div>
</div>
</div>
<div class='para'>
<div class='marginalizedparent'><a class='marginalized' href='hash.combine#4'>4</a></div>
<div class='itemdescr'>
<div class='sourceLinkParent'><a class='sourceLink'
href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L128'>#</a>
</div>
<div id='hash.combine-4.sentence-1' class='sentence'><span class='textit'>Remarks:</span>
The expression inside <span class='texttt'><span class='keyword'>noexcept</span></span> is equivalent to
<pre class='codeblock'>
<span class='parenthesis'>(</span><span class='keyword'>noexcept</span><span class='parenthesis'>(</span>std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Index</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 >Index</h1><div id=':C++_Standard'><div class='indexitems'>C++ Standard, <a href='refs#def:C++_Standard'>[refs]</a></div></div><div id=':JEGP_library'><div class='indexitems'>JEGP library, <a href='scope#def:JEGP_library'>[scope]</a></div></div><div id=':<jegp/utility.hpp>'><div class='indexitems'><span class='texttt'>&lt;jegp/utility.hpp&gt;</span>, <a href='utility.syn#:%3cjegp/utility.hpp%3e'>[utility.syn]</a></div></div></div></body></html>

View File

@ -0,0 +1,15 @@
<!DOCTYPE html><html lang='en'><head><title>[hash.combine]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility#hash.combine'>[utility]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>4.2.4</a> <span class='texttt'>hash_&shy;combine</span> <a class='abbr_ref'>[hash.combine]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L98'>#</a></div><div id='1.sentence-1' class='sentence'>Insipred by <span class='texttt'>Boost<span class='operator'>.</span>ContainerHash</span><a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.sentence-2' class='sentence'>Useful in the specializations of <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash</span>
whose <span class='texttt'>Key</span>'s salient parts consist of two or more objects<a class='hidden_link' href='#1.sentence-2'>.</a></div> <span class='indexparent'><a class='index' id='lib:hash_combine'></a></span></div><div class='itemdecl' id='itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
</code></div><div class='itemdescr'></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L110'>#</a></div><div id='2.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='2.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#2.1'>(2.1)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.519em; padding-bottom: 0.519em;"><span class='keyword'>sizeof</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>(</span>Args<span class='parenthesis'>)</span></span></span></span></span><span class="mjx-mo MJXc-space3"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.446em;"></span></span><span class="mjx-texatom MJXc-space3"><span class="mjx-mrow"></span></span><span class="mjx-mn"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">2</span></span></span></span></span> and</li><li id='2.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#2.2'>(2.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span></span> is enabled (C++ Standard's <a href="https://wg21.link/unord.hash">[unord.hash]</a>)
for all <span class='texttt'>T</span> in <span class='texttt'>Args</span><a class='hidden_link' href='#2.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L120'>#</a></div><div id='3.sentence-1' class='sentence'><span class='textit'>Effects:</span>
Equivalent to:
<pre class='codeblock'>
std<span class='operator'>::</span>size_t seed<span class='curlybracket'>{</span><span class='literal'>0</span><span class='curlybracket'>}</span>;
<span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span>, <span class='parenthesis'>(</span>seed <span class='operator'>^</span><span class='operator'>=</span> std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>6</span><span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='literal'>2</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</pre></div></div></div><div class='para' id='4'><div class='marginalizedparent'><a class='marginalized' href='#4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L128'>#</a></div><div id='4.sentence-1' class='sentence'><span class='textit'>Remarks:</span>
The expression inside <span class='texttt'><span class='keyword'>noexcept</span></span> is equivalent to
<pre class='codeblock'>
<span class='parenthesis'>(</span><span class='keyword'>noexcept</span><span class='parenthesis'>(</span>std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>)</span>
</pre></div></div></div></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Index of library headers</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 >Index of library headers</h1><div id=':<jegp/utility.hpp>'><div class='indexitems'><span class='texttt'>&lt;jegp/utility.hpp&gt;</span>, <a href='utility.syn#:%3cjegp/utility.hpp%3e'>[utility.syn]</a></div></div></div></body></html>

BIN
docs/api/gen/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

9
docs/api/gen/index.html Normal file
View File

@ -0,0 +1,9 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Contents</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/><meta name='description' content='Browser-friendly rendering of the JEGP library'><style>h1 { margin: 0.2em 5pt 0.2em 5pt; line-height: 1.35; }
h2 { margin: 0.2em 5pt 0.2em 5pt; border-bottom: 1px dashed rgba(0, 0, 0, 0.2); line-height: 1.35; }
h3 { margin: 0.2em 5pt 0.2em 5pt; border-bottom: 1px dashed rgba(0, 0, 0, 0.2); line-height: 1.35; }
h4 { margin: 0.1em 5pt 0.1em 5pt; border-bottom: 1px dashed rgba(0, 0, 0, 0.2); line-height: 1.35; }
:target h2 { border-bottom: none; }
.tocHeader { text-align: center; }
div.tocChapter { display: none; }
:target > div.tocChapter { display: block; }
</style></head><body><div class='wrapper'><h1 style='text-align:center; hyphens:none'>JEGP Library</h1><br><div class='tocHeader'>(Generated on 2020-05-20 from the <a href='https://github.com/johelegp/jegp/commit/4dfbe8f5446ba1f53439a36ce12119fe285268c9'>LaTeX sources</a> by <a href='https://github.com/johelegp/cxxdraft-htmlgen/tree/jegp'>cxxdraft-htmlgen</a>.)</div><br><h1>Contents</h1><div id='scope'><h2 ><a class='secnum' style='min-width:73pt'>1</a> Scope <a class='folded_abbr_ref' href='scope'>[scope]</a><a class='unfolded_abbr_ref' href='scope'>[scope]</a></h2><div class='tocChapter'></div></div><div id='refs'><h2 ><a class='secnum' style='min-width:73pt'>2</a> References <a class='folded_abbr_ref' href='refs'>[refs]</a><a class='unfolded_abbr_ref' href='refs'>[refs]</a></h2><div class='tocChapter'></div></div><div id='intro'><h2 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='folded_abbr_ref' href='#intro'>[intro]</a><a class='unfolded_abbr_ref' href='intro'>[intro]</a></h2><div class='tocChapter'><div id='intro.general'><h3 ><a class='secnum' style='min-width:88pt'>3.1</a> General <a class='abbr_ref' href='intro.general'>[intro.general]</a></h3></div><div id='requirements'><h3 ><a class='secnum' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref' href='requirements'>[requirements]</a></h3><div id='contents'><h4 ><a class='secnum' style='min-width:103pt'>3.2.1</a> Library contents <a class='abbr_ref' href='contents'>[contents]</a></h4></div><div id='reserved.names'><h4 ><a class='secnum' style='min-width:103pt'>3.2.2</a> Reserved names <a class='abbr_ref' href='reserved.names'>[reserved.names]</a></h4></div></div></div></div><div id='utilities'><h2 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='folded_abbr_ref' href='#utilities'>[utilities]</a><a class='unfolded_abbr_ref' href='utilities'>[utilities]</a></h2><div class='tocChapter'><div id='utilities.general'><h3 ><a class='secnum' style='min-width:88pt'>4.1</a> General <a class='abbr_ref' href='utilities.general'>[utilities.general]</a></h3></div><div id='utility'><h3 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility'>[utility]</a></h3><div id='utility.syn'><h4 ><a class='secnum' style='min-width:103pt'>4.2.1</a> Header <span class='texttt'>&lt;jegp/utility.hpp&gt;</span> synopsis <a class='abbr_ref' href='utility.syn'>[utility.syn]</a></h4></div><div id='utility.underlying'><h4 ><a class='secnum' style='min-width:103pt'>4.2.2</a> <span class='texttt'>underlying</span> <a class='abbr_ref' href='utility.underlying'>[utility.underlying]</a></h4></div><div id='static.downcast'><h4 ><a class='secnum' style='min-width:103pt'>4.2.3</a> <span class='texttt'>static_&shy;downcast</span> <a class='abbr_ref' href='static.downcast'>[static.downcast]</a></h4></div><div id='hash.combine'><h4 ><a class='secnum' style='min-width:103pt'>4.2.4</a> <span class='texttt'>hash_&shy;combine</span> <a class='abbr_ref' href='hash.combine'>[hash.combine]</a></h4></div></div></div></div><h2 ><a href='generalindex'>Index</a></h2><h2 ><a href='headerindex'>Index of library headers</a></h2><h2 ><a href='libraryindex'>Index of library names</a></h2></div></body></html>

View File

@ -0,0 +1,3 @@
<!DOCTYPE html><html lang='en'><head><title>[intro.general]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>3.1</a> General <a class='abbr_ref'>[intro.general]</a></h2><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L25'>#</a></div><div id='1.sentence-1' class='sentence'>The library specification subsumes the C++ Standard's <a href="https://wg21.link/library">[library]</a>,
assumingly amended to the context of this library<a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.example-1' class='example'>[&nbsp;<a class='example_link' href='#1.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <ul class='itemize'><li ><div id='1.sentence-1' class='sentence'>Per C++ Standard's <a href="https://wg21.link/namespace.future">[namespace.future]</a>, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>jegp2</span> is reserved<a class='hidden_link' href='#1.sentence-1'>.</a></div></li><li ><div id='1.sentence-1' class='sentence'>Per C++ Standard's <a href="https://wg21.link/contents">[contents]</a>#3, a name <span class='texttt'>x</span> means <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>jegp<span class='operator'>&#x200b;::&#x200b;</span>x</span><a class='hidden_link' href='#1.sentence-1'>.</a></div></li></ul>&nbsp;<i>end example</i></div>&nbsp;]</div> <div id='1.sentence-2' class='sentence'>
The following subclauses describe additions to it<a class='hidden_link' href='#1.sentence-2'>.</a></div><div class='numberedTable' id='tab:library.categories'>Table <a href='#tab:library.categories'>1</a>: Library categories &emsp;&ensp;[tab:library.categories]<br><table ><tr class='rowsep'><td class='left'><div id='1.sentence-3' class='sentence'><b>Clause</b></div></td><td class='left'><div id='1.sentence-4' class='sentence'><b>Category</b></div></td></tr><tr class='capsep'><td class='left'><div id='1.sentence-5' class='sentence'><a href='utilities'>[utilities]</a></div></td><td class='left'><div id='1.sentence-6' class='sentence'>General utilities library</div></td></tr></table></div></div></div></body></html>

3
docs/api/gen/intro.html Normal file
View File

@ -0,0 +1,3 @@
<!DOCTYPE html><html lang='en'><head><title>[intro]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a></h1><div id='general' class='section'><h2 ><a class='secnum' href='#general' style='min-width:88pt'>3.1</a> General <a class='abbr_ref' href='intro.general'>[intro.general]</a></h2><div class='para' id='general-1'><div class='marginalizedparent'><a class='marginalized' href='#general-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L25'>#</a></div><div id='general-1.sentence-1' class='sentence'>The library specification subsumes the C++ Standard's <a href="https://wg21.link/library">[library]</a>,
assumingly amended to the context of this library<a class='hidden_link' href='#general-1.sentence-1'>.</a></div> <div id='general-1.example-1' class='example'>[&nbsp;<a class='example_link' href='#general-1.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <ul class='itemize'><li ><div id='general-1.sentence-1' class='sentence'>Per C++ Standard's <a href="https://wg21.link/namespace.future">[namespace.future]</a>, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>jegp2</span> is reserved<a class='hidden_link' href='#general-1.sentence-1'>.</a></div></li><li ><div id='general-1.sentence-1' class='sentence'>Per C++ Standard's <a href="https://wg21.link/contents">[contents]</a>#3, a name <span class='texttt'>x</span> means <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>jegp<span class='operator'>&#x200b;::&#x200b;</span>x</span><a class='hidden_link' href='#general-1.sentence-1'>.</a></div></li></ul>&nbsp;<i>end example</i></div>&nbsp;]</div> <div id='general-1.sentence-2' class='sentence'>
The following subclauses describe additions to it<a class='hidden_link' href='#general-1.sentence-2'>.</a></div><div class='numberedTable' id='tab:library.categories'>Table <a href='#tab:library.categories'>1</a>: Library categories &emsp;&ensp;[tab:library.categories]<br><table ><tr class='rowsep'><td class='left'><div id='general-1.sentence-3' class='sentence'><b>Clause</b></div></td><td class='left'><div id='general-1.sentence-4' class='sentence'><b>Category</b></div></td></tr><tr class='capsep'><td class='left'><div id='general-1.sentence-5' class='sentence'><a href='utilities'>[utilities]</a></div></td><td class='left'><div id='general-1.sentence-6' class='sentence'>General utilities library</div></td></tr></table></div></div></div><div id='requirements' class='section'><h2 ><a class='secnum' href='#requirements' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref' href='requirements'>[requirements]</a></h2><div id='contents' class='section'><h3 ><a class='secnum' href='#contents' style='min-width:103pt'>3.2.1</a> Library contents <a class='abbr_ref' href='contents'>[contents]</a></h3><div class='para' id='contents-1'><div class='marginalizedparent'><a class='marginalized' href='#contents-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L47'>#</a></div><div id='contents-1.sentence-1' class='sentence'>Whenever a name is qualified with <span class='texttt'>X<span class='operator'>&#x200b;::&#x200b;</span></span>, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>X<span class='operator'>&#x200b;::&#x200b;</span></span> is meant<a class='hidden_link' href='#contents-1.sentence-1'>.</a></div> <div id='contents-1.example-1' class='example'>[&nbsp;<a class='example_link' href='#contents-1.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <div id='contents-1.sentence-2' class='sentence'>When <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is mentioned, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is meant<a class='hidden_link' href='#contents-1.sentence-2'>.</a></div>&nbsp;<i>end example</i></div>&nbsp;]</div> </div></div><div id='reserved.names' class='section'><h3 ><a class='secnum' href='#reserved.names' style='min-width:103pt'>3.2.2</a> Reserved names <a class='abbr_ref' href='reserved.names'>[reserved.names]</a></h3><div class='para' id='reserved.names-1'><div class='marginalizedparent'><a class='marginalized' href='#reserved.names-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L55'>#</a></div><div id='reserved.names-1.sentence-1' class='sentence'>The JEGP library reserves macro names starting with <span class='texttt'>JEGP_&shy;</span><a class='hidden_link' href='#reserved.names-1.sentence-1'>.</a></div></div></div></div></div></body></html>

BIN
docs/api/gen/jegp.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Index of library names</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 >Index of library names</h1><div id=':hash_combine'><div class='indexitems'><span class='texttt'>hash_&shy;combine</span>, <a href='hash.combine#lib:hash_combine'>[hash.combine]</a></div></div><div id=':static_downcast'><div class='indexitems'><span class='texttt'>static_&shy;downcast</span>, <a href='static.downcast#lib:static_downcast'>[static.downcast]</a></div></div><div id=':underlying'><div class='indexitems'><span class='texttt'>underlying</span>, <a href='utility.underlying#lib:underlying'>[utility.underlying]</a></div></div></div></body></html>

3
docs/api/gen/refs.html Normal file
View File

@ -0,0 +1,3 @@
<!DOCTYPE html><html lang='en'><head><title>[refs]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>2</a> References <a class='abbr_ref' href='./#refs'>[refs]</a></h1><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L9'>#</a></div><div id='1.sentence-1' class='sentence'>The following documents are referred to in the text
in such a way that some or all of their content
constitutes requirements of this document<a class='hidden_link' href='#1.sentence-1'>.</a></div><ul class='itemize'><li id='1.1'><div class='marginalizedparent' style='left:-7em'><a class='marginalized' href='#1.1'>(1.1)</a></div><div id='1.1.sentence-1' class='sentence'>ISO/IEC 14882:2020, <span class='textit'>Programming Languages — C++</span></div></li></ul></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L18'>#</a></div><div id='2.sentence-1' class='sentence'>ISO/IEC 14882 is herein called the <a class='hidden_link' href='#def:C++_Standard' id='def:C++_Standard'><i >C++ Standard</i></a><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>[requirements]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref'>[requirements]</a></h2><div id='contents' class='section'><h3 ><a class='secnum' href='#contents' style='min-width:103pt'>3.2.1</a> Library contents <a class='abbr_ref' href='contents'>[contents]</a></h3><div class='para' id='contents-1'><div class='marginalizedparent'><a class='marginalized' href='#contents-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L47'>#</a></div><div id='contents-1.sentence-1' class='sentence'>Whenever a name is qualified with <span class='texttt'>X<span class='operator'>&#x200b;::&#x200b;</span></span>, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>X<span class='operator'>&#x200b;::&#x200b;</span></span> is meant<a class='hidden_link' href='#contents-1.sentence-1'>.</a></div> <div id='contents-1.example-1' class='example'>[&nbsp;<a class='example_link' href='#contents-1.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <div id='contents-1.sentence-2' class='sentence'>When <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is mentioned, <span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>std<span class='operator'>&#x200b;::&#x200b;</span>Y</span> is meant<a class='hidden_link' href='#contents-1.sentence-2'>.</a></div>&nbsp;<i>end example</i></div>&nbsp;]</div> </div></div><div id='reserved.names' class='section'><h3 ><a class='secnum' href='#reserved.names' style='min-width:103pt'>3.2.2</a> Reserved names <a class='abbr_ref' href='reserved.names'>[reserved.names]</a></h3><div class='para' id='reserved.names-1'><div class='marginalizedparent'><a class='marginalized' href='#reserved.names-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L55'>#</a></div><div id='reserved.names-1.sentence-1' class='sentence'>The JEGP library reserves macro names starting with <span class='texttt'>JEGP_&shy;</span><a class='hidden_link' href='#reserved.names-1.sentence-1'>.</a></div></div></div></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>[reserved.names]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>3</a> Introduction <a class='abbr_ref' href='./#intro'>[intro]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>3.2</a> Library-wide requirements <a class='abbr_ref' href='requirements#reserved.names'>[requirements]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>3.2.2</a> Reserved names <a class='abbr_ref'>[reserved.names]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L55'>#</a></div><div id='1.sentence-1' class='sentence'>The JEGP library reserves macro names starting with <span class='texttt'>JEGP_&shy;</span><a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div></body></html>

1
docs/api/gen/scope.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>[scope]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>1</a> Scope <a class='abbr_ref' href='./#scope'>[scope]</a></h1><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/intro.tex#L4'>#</a></div><div id='1.sentence-1' class='sentence'>This document describes the contents of the <a class='hidden_link' href='#def:JEGP_library' id='def:JEGP_library'><i >JEGP library</i></a><a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div></body></html>

View File

@ -0,0 +1,8 @@
<!DOCTYPE html><html lang='en'><head><title>[static.downcast]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility#static.downcast'>[utility]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>4.2.3</a> <span class='texttt'>static_&shy;downcast</span> <a class='abbr_ref'>[static.downcast]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L61'>#</a></div><div id='1.sentence-1' class='sentence'>A <span class='texttt'><span class='keyword'>static_&shy;cast</span></span> that performs a downcast<a class='hidden_link' href='#1.sentence-1'>.</a></div> <span class='indexparent'><a class='index' id='lib:static_downcast'></a></span></div><div class='itemdecl' id='itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L71'>#</a></div><div id='2.sentence-1' class='sentence'>Let <span class='texttt'><span class='textit'>derived-ref</span></span> be
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>base<span class='parenthesis'>)</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L75'>#</a></div><div id='3.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='3.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#3.1'>(3.1)</a></div><span class='texttt'>DerivedRef</span> is a reference type,</li><li id='3.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#3.2'>(3.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span></span> is derived from
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span></span>, and</li><li id='3.3'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#3.3'>(3.3)</a></div><span class='texttt'><span class='textit'>derived-ref</span></span> is well-formed<a class='hidden_link' href='#3.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='4'><div class='marginalizedparent'><a class='marginalized' href='#4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L87'>#</a></div><div id='4.sentence-1' class='sentence'><span class='textit'>Preconditions:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span> has well-defined behavior<a class='hidden_link' href='#4.sentence-1'>.</a></div></div></div><div class='para' id='5'><div class='marginalizedparent'><a class='marginalized' href='#5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L91'>#</a></div><div id='5.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span><a class='hidden_link' href='#5.sentence-1'>.</a></div></div></div></div></body></html>

1
docs/api/gen/tab.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>JEGP Library: Tables</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1>List of Tables <a href='./#tab' class='abbr_ref'>[tab]</a></h1><hr><h4 ><a class='secnum' style='min-width:88pt'>3.1</a> General <a class='abbr_ref' href='intro.general#tab:library.categories'>[intro.general]</a></h4><div class='numberedTable' id='library.categories'>Table <a href='#library.categories'>1</a>: Library categories &emsp;&ensp;[tab:library.categories]<br><table ><tr class='rowsep'><td class='left'><div id='sentence-3' class='sentence'><b>Clause</b></div></td><td class='left'><div id='sentence-4' class='sentence'><b>Category</b></div></td></tr><tr class='capsep'><td class='left'><div id='sentence-5' class='sentence'><a href='utilities'>[utilities]</a></div></td><td class='left'><div id='sentence-6' class='sentence'>General utilities library</div></td></tr></table></div><hr><h4 ><a class='secnum' style='min-width:88pt'>4.1</a> General <a class='abbr_ref' href='utilities.general#tab:utilities.summary'>[utilities.general]</a></h4><div class='numberedTable' id='utilities.summary'>Table <a href='#utilities.summary'>2</a>: General utilities library summary &emsp;&ensp;[tab:utilities.summary]<br><table ><tr class='rowsep'><td class='empty left'></td><td class='left'><div id='sentence-3' class='sentence'><b>Subclause</b></div></td><td class='left'><div id='sentence-4' class='sentence'><b>Header</b></div></td></tr><tr class='capsep'><td class='left'><div id='sentence-5' class='sentence'><a href='utility'>[utility]</a></div></td><td class='left'><div id='sentence-6' class='sentence'>Utility components</div></td><td class='left'><div id='sentence-7' class='sentence'><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span></div></td></tr></table></div></div></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang='en'><head><title>[utilities.general]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.1</a> General <a class='abbr_ref'>[utilities.general]</a></h2><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L6'>#</a></div><div id='1.sentence-1' class='sentence'>This clause describes generally useful utilities<a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.sentence-2' class='sentence'>These utilities are summarized in Table <a href='#tab:utilities.summary'>2</a><a class='hidden_link' href='#1.sentence-2'>.</a></div><div class='numberedTable' id='tab:utilities.summary'>Table <a href='#tab:utilities.summary'>2</a>: General utilities library summary &emsp;&ensp;[tab:utilities.summary]<br><table ><tr class='rowsep'><td class='empty left'></td><td class='left'><div id='1.sentence-3' class='sentence'><b>Subclause</b></div></td><td class='left'><div id='1.sentence-4' class='sentence'><b>Header</b></div></td></tr><tr class='capsep'><td class='left'><div id='1.sentence-5' class='sentence'><a href='utility'>[utility]</a></div></td><td class='left'><div id='1.sentence-6' class='sentence'>Utility components</div></td><td class='left'><div id='1.sentence-7' class='sentence'><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span></div></td></tr></table></div></div></div></body></html>

View File

@ -0,0 +1,43 @@
<!DOCTYPE html><html lang='en'><head><title>[utilities]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><div id='general' class='section'><h2 ><a class='secnum' href='#general' style='min-width:88pt'>4.1</a> General <a class='abbr_ref' href='utilities.general'>[utilities.general]</a></h2><div class='para' id='general-1'><div class='marginalizedparent'><a class='marginalized' href='#general-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L6'>#</a></div><div id='general-1.sentence-1' class='sentence'>This clause describes generally useful utilities<a class='hidden_link' href='#general-1.sentence-1'>.</a></div> <div id='general-1.sentence-2' class='sentence'>These utilities are summarized in Table <a href='#tab:utilities.summary'>2</a><a class='hidden_link' href='#general-1.sentence-2'>.</a></div><div class='numberedTable' id='tab:utilities.summary'>Table <a href='#tab:utilities.summary'>2</a>: General utilities library summary &emsp;&ensp;[tab:utilities.summary]<br><table ><tr class='rowsep'><td class='empty left'></td><td class='left'><div id='general-1.sentence-3' class='sentence'><b>Subclause</b></div></td><td class='left'><div id='general-1.sentence-4' class='sentence'><b>Header</b></div></td></tr><tr class='capsep'><td class='left'><div id='general-1.sentence-5' class='sentence'><a href='#utility'>[utility]</a></div></td><td class='left'><div id='general-1.sentence-6' class='sentence'>Utility components</div></td><td class='left'><div id='general-1.sentence-7' class='sentence'><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span></div></td></tr></table></div></div></div><div id='utility' class='section'><h2 ><a class='secnum' href='#utility' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility'>[utility]</a></h2><div id='utility.syn' class='section'><h3 ><a class='secnum' href='#utility.syn' style='min-width:103pt'>4.2.1</a> Header <span class='texttt'>&lt;jegp/utility.hpp&gt;</span> synopsis <a class='abbr_ref' href='utility.syn'>[utility.syn]</a></h3><div class='para' id='utility.syn-1'><div class='marginalizedparent'><a class='marginalized' href='#utility.syn-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L18'>#</a></div><div id='utility.syn-1.sentence-1' class='sentence'>The header <span class='indexparent'><a class='index' id=':<jegp/utility.hpp>'></a></span><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span>
contains some basic constructs<a class='hidden_link' href='#utility.syn-1.sentence-1'>.</a></div><span class='indexparent'><a class='index' id=':<jegp/utility.hpp>_'></a></span><pre class='codeblock'>
<span class='keyword'>namespace</span> jegp
<span class='curlybracket'>{</span>
<span class='comment'>// <a href='#utility.underlying'>[utility.underlying]</a>, <span class='tcode_in_codeblock'>underlying</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#static.downcast'>[static.downcast]</a>, <span class='tcode_in_codeblock'>static_&shy;downcast</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#hash.combine'>[hash.combine]</a>, <span class='tcode_in_codeblock'>hash_&shy;combine</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
<span class='curlybracket'>}</span> <span class='comment'>// namespace jegp</span>
</pre></div></div><div id='utility.underlying' class='section'><h3 ><a class='secnum' href='#utility.underlying' style='min-width:103pt'>4.2.2</a> <span class='texttt'>underlying</span> <a class='abbr_ref' href='utility.underlying'>[utility.underlying]</a></h3><span class='indexparent'><a class='index' id='lib:underlying'></a></span><div class='itemdecl' id='utility.underlying-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#utility.underlying-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='utility.underlying-1'><div class='marginalizedparent'><a class='marginalized' href='#utility.underlying-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L50'>#</a></div><div id='utility.underlying-1.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>is_&shy;enum_&shy;v<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#utility.underlying-1.sentence-1'>.</a></div></div></div><div class='para' id='utility.underlying-2'><div class='marginalizedparent'><a class='marginalized' href='#utility.underlying-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L54'>#</a></div><div id='utility.underlying-2.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>std<span class='operator'>&#x200b;::&#x200b;</span>underlying_&shy;type_&shy;t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>e<span class='parenthesis'>)</span></span><a class='hidden_link' href='#utility.underlying-2.sentence-1'>.</a></div></div></div></div><div id='static.downcast' class='section'><h3 ><a class='secnum' href='#static.downcast' style='min-width:103pt'>4.2.3</a> <span class='texttt'>static_&shy;downcast</span> <a class='abbr_ref' href='static.downcast'>[static.downcast]</a></h3><div class='para' id='static.downcast-1'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L61'>#</a></div><div id='static.downcast-1.sentence-1' class='sentence'>A <span class='texttt'><span class='keyword'>static_&shy;cast</span></span> that performs a downcast<a class='hidden_link' href='#static.downcast-1.sentence-1'>.</a></div> <span class='indexparent'><a class='index' id='lib:static_downcast'></a></span></div><div class='itemdecl' id='static.downcast-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#static.downcast-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='static.downcast-2'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L71'>#</a></div><div id='static.downcast-2.sentence-1' class='sentence'>Let <span class='texttt'><span class='textit'>derived-ref</span></span> be
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>base<span class='parenthesis'>)</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#static.downcast-2.sentence-1'>.</a></div></div></div><div class='para' id='static.downcast-3'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L75'>#</a></div><div id='static.downcast-3.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='static.downcast-3.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.1'>(3.1)</a></div><span class='texttt'>DerivedRef</span> is a reference type,</li><li id='static.downcast-3.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.2'>(3.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span></span> is derived from
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span></span>, and</li><li id='static.downcast-3.3'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.3'>(3.3)</a></div><span class='texttt'><span class='textit'>derived-ref</span></span> is well-formed<a class='hidden_link' href='#static.downcast-3.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='static.downcast-4'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L87'>#</a></div><div id='static.downcast-4.sentence-1' class='sentence'><span class='textit'>Preconditions:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span> has well-defined behavior<a class='hidden_link' href='#static.downcast-4.sentence-1'>.</a></div></div></div><div class='para' id='static.downcast-5'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L91'>#</a></div><div id='static.downcast-5.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span><a class='hidden_link' href='#static.downcast-5.sentence-1'>.</a></div></div></div></div><div id='hash.combine' class='section'><h3 ><a class='secnum' href='#hash.combine' style='min-width:103pt'>4.2.4</a> <span class='texttt'>hash_&shy;combine</span> <a class='abbr_ref' href='hash.combine'>[hash.combine]</a></h3><div class='para' id='hash.combine-1'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L98'>#</a></div><div id='hash.combine-1.sentence-1' class='sentence'>Insipred by <span class='texttt'>Boost<span class='operator'>.</span>ContainerHash</span><a class='hidden_link' href='#hash.combine-1.sentence-1'>.</a></div> <div id='hash.combine-1.sentence-2' class='sentence'>Useful in the specializations of <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash</span>
whose <span class='texttt'>Key</span>'s salient parts consist of two or more objects<a class='hidden_link' href='#hash.combine-1.sentence-2'>.</a></div> <span class='indexparent'><a class='index' id='lib:hash_combine'></a></span></div><div class='itemdecl' id='hash.combine-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#hash.combine-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
</code></div><div class='itemdescr'></div><div class='para' id='hash.combine-2'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L110'>#</a></div><div id='hash.combine-2.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='hash.combine-2.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#hash.combine-2.1'>(2.1)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.519em; padding-bottom: 0.519em;"><span class='keyword'>sizeof</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>(</span>Args<span class='parenthesis'>)</span></span></span></span></span><span class="mjx-mo MJXc-space3"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.446em;"></span></span><span class="mjx-texatom MJXc-space3"><span class="mjx-mrow"></span></span><span class="mjx-mn"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">2</span></span></span></span></span> and</li><li id='hash.combine-2.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#hash.combine-2.2'>(2.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span></span> is enabled (C++ Standard's <a href="https://wg21.link/unord.hash">[unord.hash]</a>)
for all <span class='texttt'>T</span> in <span class='texttt'>Args</span><a class='hidden_link' href='#hash.combine-2.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='hash.combine-3'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L120'>#</a></div><div id='hash.combine-3.sentence-1' class='sentence'><span class='textit'>Effects:</span>
Equivalent to:
<pre class='codeblock'>
std<span class='operator'>::</span>size_t seed<span class='curlybracket'>{</span><span class='literal'>0</span><span class='curlybracket'>}</span>;
<span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span>, <span class='parenthesis'>(</span>seed <span class='operator'>^</span><span class='operator'>=</span> std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>6</span><span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='literal'>2</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</pre></div></div></div><div class='para' id='hash.combine-4'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L128'>#</a></div><div id='hash.combine-4.sentence-1' class='sentence'><span class='textit'>Remarks:</span>
The expression inside <span class='texttt'><span class='keyword'>noexcept</span></span> is equivalent to
<pre class='codeblock'>
<span class='parenthesis'>(</span><span class='keyword'>noexcept</span><span class='parenthesis'>(</span>std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>)</span>
</pre></div></div></div></div></div></div></body></html>

43
docs/api/gen/utility.html Normal file
View File

@ -0,0 +1,43 @@
<!DOCTYPE html><html lang='en'><head><title>[utility]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref'>[utility]</a></h2><div id='syn' class='section'><h3 ><a class='secnum' href='#syn' style='min-width:103pt'>4.2.1</a> Header <span class='texttt'>&lt;jegp/utility.hpp&gt;</span> synopsis <a class='abbr_ref' href='utility.syn'>[utility.syn]</a></h3><div class='para' id='syn-1'><div class='marginalizedparent'><a class='marginalized' href='#syn-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L18'>#</a></div><div id='syn-1.sentence-1' class='sentence'>The header <span class='indexparent'><a class='index' id=':<jegp/utility.hpp>'></a></span><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span>
contains some basic constructs<a class='hidden_link' href='#syn-1.sentence-1'>.</a></div><span class='indexparent'><a class='index' id=':<jegp/utility.hpp>_'></a></span><pre class='codeblock'>
<span class='keyword'>namespace</span> jegp
<span class='curlybracket'>{</span>
<span class='comment'>// <a href='#underlying'>[utility.underlying]</a>, <span class='tcode_in_codeblock'>underlying</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#static.downcast'>[static.downcast]</a>, <span class='tcode_in_codeblock'>static_&shy;downcast</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#hash.combine'>[hash.combine]</a>, <span class='tcode_in_codeblock'>hash_&shy;combine</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
<span class='curlybracket'>}</span> <span class='comment'>// namespace jegp</span>
</pre></div></div><div id='underlying' class='section'><h3 ><a class='secnum' href='#underlying' style='min-width:103pt'>4.2.2</a> <span class='texttt'>underlying</span> <a class='abbr_ref' href='utility.underlying'>[utility.underlying]</a></h3><span class='indexparent'><a class='index' id='lib:underlying'></a></span><div class='itemdecl' id='underlying-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#underlying-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='underlying-1'><div class='marginalizedparent'><a class='marginalized' href='#underlying-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L50'>#</a></div><div id='underlying-1.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>is_&shy;enum_&shy;v<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#underlying-1.sentence-1'>.</a></div></div></div><div class='para' id='underlying-2'><div class='marginalizedparent'><a class='marginalized' href='#underlying-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L54'>#</a></div><div id='underlying-2.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>std<span class='operator'>&#x200b;::&#x200b;</span>underlying_&shy;type_&shy;t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>e<span class='parenthesis'>)</span></span><a class='hidden_link' href='#underlying-2.sentence-1'>.</a></div></div></div></div><div id='static.downcast' class='section'><h3 ><a class='secnum' href='#static.downcast' style='min-width:103pt'>4.2.3</a> <span class='texttt'>static_&shy;downcast</span> <a class='abbr_ref' href='static.downcast'>[static.downcast]</a></h3><div class='para' id='static.downcast-1'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L61'>#</a></div><div id='static.downcast-1.sentence-1' class='sentence'>A <span class='texttt'><span class='keyword'>static_&shy;cast</span></span> that performs a downcast<a class='hidden_link' href='#static.downcast-1.sentence-1'>.</a></div> <span class='indexparent'><a class='index' id='lib:static_downcast'></a></span></div><div class='itemdecl' id='static.downcast-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#static.downcast-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='static.downcast-2'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L71'>#</a></div><div id='static.downcast-2.sentence-1' class='sentence'>Let <span class='texttt'><span class='textit'>derived-ref</span></span> be
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>base<span class='parenthesis'>)</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#static.downcast-2.sentence-1'>.</a></div></div></div><div class='para' id='static.downcast-3'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L75'>#</a></div><div id='static.downcast-3.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='static.downcast-3.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.1'>(3.1)</a></div><span class='texttt'>DerivedRef</span> is a reference type,</li><li id='static.downcast-3.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.2'>(3.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>DerivedRef<span class='anglebracket'>&gt;</span></span> is derived from
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>remove_&shy;cvref_&shy;t<span class='anglebracket'>&lt;</span>Base<span class='anglebracket'>&gt;</span></span>, and</li><li id='static.downcast-3.3'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#static.downcast-3.3'>(3.3)</a></div><span class='texttt'><span class='textit'>derived-ref</span></span> is well-formed<a class='hidden_link' href='#static.downcast-3.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='static.downcast-4'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L87'>#</a></div><div id='static.downcast-4.sentence-1' class='sentence'><span class='textit'>Preconditions:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span> has well-defined behavior<a class='hidden_link' href='#static.downcast-4.sentence-1'>.</a></div></div></div><div class='para' id='static.downcast-5'><div class='marginalizedparent'><a class='marginalized' href='#static.downcast-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L91'>#</a></div><div id='static.downcast-5.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='textit'>derived-ref</span></span><a class='hidden_link' href='#static.downcast-5.sentence-1'>.</a></div></div></div></div><div id='hash.combine' class='section'><h3 ><a class='secnum' href='#hash.combine' style='min-width:103pt'>4.2.4</a> <span class='texttt'>hash_&shy;combine</span> <a class='abbr_ref' href='hash.combine'>[hash.combine]</a></h3><div class='para' id='hash.combine-1'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L98'>#</a></div><div id='hash.combine-1.sentence-1' class='sentence'>Insipred by <span class='texttt'>Boost<span class='operator'>.</span>ContainerHash</span><a class='hidden_link' href='#hash.combine-1.sentence-1'>.</a></div> <div id='hash.combine-1.sentence-2' class='sentence'>Useful in the specializations of <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash</span>
whose <span class='texttt'>Key</span>'s salient parts consist of two or more objects<a class='hidden_link' href='#hash.combine-1.sentence-2'>.</a></div> <span class='indexparent'><a class='index' id='lib:hash_combine'></a></span></div><div class='itemdecl' id='hash.combine-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#hash.combine-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
</code></div><div class='itemdescr'></div><div class='para' id='hash.combine-2'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L110'>#</a></div><div id='hash.combine-2.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<ul class='itemize'><li id='hash.combine-2.1'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#hash.combine-2.1'>(2.1)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.519em; padding-bottom: 0.519em;"><span class='keyword'>sizeof</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>(</span>Args<span class='parenthesis'>)</span></span></span></span></span><span class="mjx-mo MJXc-space3"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.446em;"></span></span><span class="mjx-texatom MJXc-space3"><span class="mjx-mrow"></span></span><span class="mjx-mn"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">2</span></span></span></span></span> and</li><li id='hash.combine-2.2'><div class='marginalizedparent' style='left:-10em'><a class='marginalized' href='#hash.combine-2.2'>(2.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>hash<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span></span> is enabled (C++ Standard's <a href="https://wg21.link/unord.hash">[unord.hash]</a>)
for all <span class='texttt'>T</span> in <span class='texttt'>Args</span><a class='hidden_link' href='#hash.combine-2.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='hash.combine-3'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L120'>#</a></div><div id='hash.combine-3.sentence-1' class='sentence'><span class='textit'>Effects:</span>
Equivalent to:
<pre class='codeblock'>
std<span class='operator'>::</span>size_t seed<span class='curlybracket'>{</span><span class='literal'>0</span><span class='curlybracket'>}</span>;
<span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span>, <span class='parenthesis'>(</span>seed <span class='operator'>^</span><span class='operator'>=</span> std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>6</span><span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>seed <span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='literal'>2</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</pre></div></div></div><div class='para' id='hash.combine-4'><div class='marginalizedparent'><a class='marginalized' href='#hash.combine-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L128'>#</a></div><div id='hash.combine-4.sentence-1' class='sentence'><span class='textit'>Remarks:</span>
The expression inside <span class='texttt'><span class='keyword'>noexcept</span></span> is equivalent to
<pre class='codeblock'>
<span class='parenthesis'>(</span><span class='keyword'>noexcept</span><span class='parenthesis'>(</span>std<span class='operator'>::</span>hash<span class='anglebracket'>&lt;</span>Args<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>(</span>args<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='parenthesis'>)</span>
</pre></div></div></div></div></div></body></html>

View File

@ -0,0 +1,18 @@
<!DOCTYPE html><html lang='en'><head><title>[utility.syn]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility#syn'>[utility]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>4.2.1</a> Header <span class='texttt'>&lt;jegp/utility.hpp&gt;</span> synopsis <a class='abbr_ref'>[utility.syn]</a></h3><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L18'>#</a></div><div id='1.sentence-1' class='sentence'>The header <span class='indexparent'><a class='index' id=':<jegp/utility.hpp>'></a></span><span class='texttt'><span class='anglebracket'>&lt;</span>jegp<span class='operator'>/</span>utility<span class='operator'>.</span>hpp<span class='anglebracket'>&gt;</span></span>
contains some basic constructs<a class='hidden_link' href='#1.sentence-1'>.</a></div><span class='indexparent'><a class='index' id=':<jegp/utility.hpp>_'></a></span><pre class='codeblock'>
<span class='keyword'>namespace</span> jegp
<span class='curlybracket'>{</span>
<span class='comment'>// <a href='utility.underlying'>[utility.underlying]</a>, <span class='tcode_in_codeblock'>underlying</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='static.downcast'>[static.downcast]</a>, <span class='tcode_in_codeblock'>static_&shy;downcast</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> DerivedRef, <span class='keyword'>class</span> Base<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> DerivedRef static_downcast<span class='parenthesis'>(</span>Base<span class='operator'>&amp;</span><span class='operator'>&amp;</span> base<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='hash.combine'>[hash.combine]</a>, <span class='tcode_in_codeblock'>hash_&shy;combine</span></span>
<span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>size_t hash_combine<span class='parenthesis'>(</span><span class='keyword'>const</span> Args<span class='operator'>&amp;</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> args<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><span class='textit'><span class='texttt'>see below</span></span><span class='parenthesis'>)</span>;
<span class='curlybracket'>}</span> <span class='comment'>// namespace jegp</span>
</pre></div></div></body></html>

View File

@ -0,0 +1,5 @@
<!DOCTYPE html><html lang='en'><head><title>[utility.underlying]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>4</a> General utilities library <a class='abbr_ref' href='./#utilities'>[utilities]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>4.2</a> Utility components <a class='abbr_ref' href='utility#underlying'>[utility]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>4.2.2</a> <span class='texttt'>underlying</span> <a class='abbr_ref'>[utility.underlying]</a></h3><span class='indexparent'><a class='index' id='lib:underlying'></a></span><div class='itemdecl' id='itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span> <span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Enum<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> std<span class='operator'>::</span>underlying_type_t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span> underlying<span class='parenthesis'>(</span>Enum e<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L50'>#</a></div><div id='1.sentence-1' class='sentence'><span class='textit'>Constraints:</span>
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>is_&shy;enum_&shy;v<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/johelegp/jegp/tree/4dfbe8f5446ba1f53439a36ce12119fe285268c9/doc/utilities.tex#L54'>#</a></div><div id='2.sentence-1' class='sentence'><span class='textit'>Returns:</span>
<span class='texttt'><span class='keyword'>static_&shy;cast</span><span class='anglebracket'>&lt;</span>std<span class='operator'>&#x200b;::&#x200b;</span>underlying_&shy;type_&shy;t<span class='anglebracket'>&lt;</span>Enum<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>e<span class='parenthesis'>)</span></span><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div></div></body></html>

File diff suppressed because one or more lines are too long

8
docs/javascripts/iframeResizer.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
docs/javascripts/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -175,6 +175,7 @@ nav:
- Appendix: - Appendix:
- Glossary: appendix/glossary.md - Glossary: appendix/glossary.md
- References: appendix/references.md - References: appendix/references.md
- API Reference: api.md
- Blog: - Blog:
- blog/index.md - blog/index.md
- Release Notes: release_notes.md - Release Notes: release_notes.md