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
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>
File diff suppressed because it is too large Load Diff
+8
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; }
+1
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>
+8
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
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>
+1
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
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>
+1
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>
+15
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>
+1
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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

+9
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>
+3
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
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>
Binary file not shown.
+1
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
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>
+1
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>
+1
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
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>
+8
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
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>
+1
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>
+43
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
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>
+18
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>
+5
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -175,6 +175,7 @@ nav:
- Appendix:
- Glossary: appendix/glossary.md
- References: appendix/references.md
- API Reference: api.md
- Blog:
- blog/index.md
- Release Notes: release_notes.md