mirror of
https://github.com/boostorg/pfr.git
synced 2026-01-20 04:42:22 +00:00
Compare commits
26 Commits
docs_befor
...
docs_1.0.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10d54d5f7d | ||
|
|
c23200ef5f | ||
|
|
88b2f8966b | ||
|
|
fedf8390f8 | ||
|
|
83dcdd8b03 | ||
|
|
fa46f0981d | ||
|
|
33d20623c8 | ||
|
|
a9f2b71c86 | ||
|
|
7f1d5ee960 | ||
|
|
b4c40a188d | ||
|
|
f231371b96 | ||
|
|
5aca20317d | ||
|
|
50115b2675 | ||
|
|
412d3185ba | ||
|
|
eb1fd3ac3f | ||
|
|
511d0a96fd | ||
|
|
2974f4d82a | ||
|
|
874afc2d63 | ||
|
|
65d1eeb641 | ||
|
|
b3fa49081c | ||
|
|
32f841412f | ||
|
|
a8d0f4ecf1 | ||
|
|
44f091d459 | ||
|
|
0375d19a1b | ||
|
|
80c611c87e | ||
|
|
e1f1b0f979 |
@@ -1,42 +1,42 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Macro BOOST_PFR_FLAT_FUNCTIONS_FOR</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp" title="Header <boost/pfr/flat_functions_for.hpp>">
|
||||
<link rel="prev" href="boost/pfr/tuple_size_v.html" title="Global tuple_size_v">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="boost_pfr/reference.html#header.boost.pfr.flat.functions_for_hpp" title="Header <boost/pfr/flat/functions_for.hpp>">
|
||||
<link rel="prev" href="boost/pfr/flat_tie_from_structure.html" title="Function template flat_tie_from_structure">
|
||||
<link rel="next" href="boost/pfr/flat_equal_to.html" title="Struct template flat_equal_to">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost/pfr/tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="boost/pfr/flat_tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr/reference.html#header.boost.pfr.flat.functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="BOOST_PFR_FLAT_FUNCTIONS_FOR"></a><div class="titlepage"></div>
|
||||
<a name="BOOST_PF_idm46672728940944"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Macro BOOST_PFR_FLAT_FUNCTIONS_FOR</span></h2>
|
||||
<p>BOOST_PFR_FLAT_FUNCTIONS_FOR</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp" title="Header <boost/pfr/flat_functions_for.hpp>">boost/pfr/flat_functions_for.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="boost_pfr/reference.html#header.boost.pfr.flat.functions_for_hpp" title="Header <boost/pfr/flat/functions_for.hpp>">boost/pfr/flat/functions_for.hpp</a>>
|
||||
|
||||
</span>BOOST_PFR_FLAT_FUNCTIONS_FOR(T)</pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518803264"></a><h2>Description</h2>
|
||||
<a name="idm45630904630096"></a><h2>Description</h2>
|
||||
<p>Defines comparison operators and stream operators for T. If POD is comparable or streamable using it's own operator (but not it's conversion operator), then the original operator is used.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
@@ -48,7 +48,8 @@
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>Defines</strong></span> <span class="bold"><strong>following</strong></span> <span class="bold"><strong>for</strong></span> <span class="bold"><strong>T:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
@@ -71,7 +72,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -79,7 +80,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost/pfr/tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="boost/pfr/flat_tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr/reference.html#header.boost.pfr.flat.functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
85
BOOST_PF_idm46672729188000.html
Normal file
85
BOOST_PF_idm46672729188000.html
Normal file
@@ -0,0 +1,85 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="boost_pfr/reference.html#header.boost.pfr.precise.functions_for_hpp" title="Header <boost/pfr/precise/functions_for.hpp>">
|
||||
<link rel="prev" href="boost/pfr/tie_from_structure.html" title="Function template tie_from_structure">
|
||||
<link rel="next" href="boost/pfr/equal_to.html" title="Struct template equal_to">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost/pfr/tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr/reference.html#header.boost.pfr.precise.functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="BOOST_PF_idm46672729188000"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR</span></h2>
|
||||
<p>BOOST_PFR_PRECISE_FUNCTIONS_FOR</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="boost_pfr/reference.html#header.boost.pfr.precise.functions_for_hpp" title="Header <boost/pfr/precise/functions_for.hpp>">boost/pfr/precise/functions_for.hpp</a>>
|
||||
|
||||
</span>BOOST_PFR_PRECISE_FUNCTIONS_FOR(T)</pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630906166688"></a><h2>Description</h2>
|
||||
<p>Defines comparison operators and stream operators for T. If type T is comparable or streamable using it's own operator (but not it's conversion operator), then the original operator is used.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">BOOST_PFR_PRECISE_FUNCTIONS_FOR</span><span class="special">(</span><span class="identifier">comparable_struct</span><span class="special">)</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>Defines</strong></span> <span class="bold"><strong>following</strong></span> <span class="bold"><strong>for</strong></span> <span class="bold"><strong>T:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">></span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">></span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">></span><span class="special">&</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">value</span><span class="special">)</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">></span><span class="special">&</span> <span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">></span><span class="special">&</span> <span class="identifier">in</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">value</span><span class="special">)</span><span class="special">;</span>
|
||||
|
||||
<span class="comment">// helper function for Boost unordered containers and boost::hash<>.</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">value</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost/pfr/tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr/reference.html#header.boost.pfr.precise.functions_for_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/equal_to.html
Normal file
73
boost/pfr/equal_to.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template equal_to</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="../../BOOST_PF_idm46672729188000.html" title="Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR">
|
||||
<link rel="next" href="greater.html" title="Struct template greater">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../BOOST_PF_idm46672729188000.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.equal_to"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template equal_to</span></h2>
|
||||
<p>boost::pfr::equal_to — std::equal_to like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="equal_to.html" title="Struct template equal_to">equal_to</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="equal_to.html#idm46672729175520-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="equal_to.html#idm46672729175024-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905915568"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905915152"></a><h3>
|
||||
<a name="idm46672729175520-bb"></a><code class="computeroutput">equal_to</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729175024-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../BOOST_PF_idm46672729188000.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,84 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_equal_to</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="prev" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="../../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">
|
||||
<link rel="next" href="flat_greater.html" title="Struct template flat_greater">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="../../BOOST_PF_idm46672728940944.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_equal_to"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_equal_to</span></h2>
|
||||
<p>boost::pfr::flat_equal_to — std::equal_to like flattening comparator </p>
|
||||
<p>boost::pfr::flat_equal_to — std::equal_to like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_equal_to.html" title="Struct template flat_equal_to">flat_equal_to</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_equal_to.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_equal_to.html#idm46104916939744-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_equal_to.html#idm46104916939248-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_equal_to.html#idm46104916934496-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_equal_to.html#idm46672728927280-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_equal_to.html#idm46672728926784-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518328768"></a><h2>Description</h2>
|
||||
<a name="idm45630904372720"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946518328352"></a><h3>
|
||||
<a name="idm46104916939744-bb"></a><code class="computeroutput">flat_equal_to</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916939248-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904372304"></a><h3>
|
||||
<a name="idm46672728927280-bb"></a><code class="computeroutput">flat_equal_to</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728926784-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span> </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916934496-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -86,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="../../BOOST_PF_idm46672728940944.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
92
boost/pfr/flat_for_each_field.html
Normal file
92
boost/pfr/flat_for_each_field.html
Normal file
@@ -0,0 +1,92 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_for_each_field</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_structure_tie.html" title="Function template flat_structure_tie">
|
||||
<link rel="next" href="flat_tie_from_structure.html" title="Function template flat_tie_from_structure">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_for_each_field"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template flat_for_each_field</span></h2>
|
||||
<p>boost::pfr::flat_for_each_field</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">flat_for_each_field</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&&</span> value<span class="special">,</span> <span class="identifier">F</span> <span class="special">&&</span> func<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630904735872"></a><h2>Description</h2>
|
||||
<p>Calls <code class="computeroutput">func</code> for each field of a <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> POD <code class="computeroutput">value</code>.</p>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="keyword">int</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
|
||||
<span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">my_struct</span><span class="special">{</span><span class="number">20</span><span class="special">,</span> <span class="number">22</span><span class="special">}</span><span class="special">,</span> <span class="special">[</span><span class="special">&</span><span class="identifier">sum</span><span class="special">]</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">field</span><span class="special">;</span> <span class="special">}</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">sum</span> <span class="special">==</span> <span class="number">42</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Parameters:</span></p></td>
|
||||
<td><div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><p><span class="term"><code class="computeroutput">func</code></span></p></td>
|
||||
<td>
|
||||
<p>must have one of the following signatures:</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem"><p>any_return_type func(U&& field) // field of value is perfect forwarded to function</p></li>
|
||||
<li class="listitem"><p>any_return_type func(U&& field, std::size_t i)</p></li>
|
||||
<li class="listitem"><p>any_return_type func(U&& value, I i) // Here I is an <code class="computeroutput">std::integral_constant<size_t, field_index></code></p></li>
|
||||
</ul></div>
|
||||
<p>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p><span class="term"><code class="computeroutput">value</code></span></p></td>
|
||||
<td><p>After <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattening</a> to each field of this variable will be the <code class="computeroutput">func</code> applied.</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,41 +1,42 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function flat_get</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="prev" href="flat_tuple_size_v.html" title="Global flat_tuple_size_v">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_tuple_element_t.html" title="Type definition flat_tuple_element_t">
|
||||
<link rel="next" href="flat_structure_to_tuple.html" title="Function template flat_structure_to_tuple">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_get"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function flat_get</span></h2>
|
||||
<p>boost::pfr::flat_get — Returns reference or const reference to a field with index <code class="computeroutput">I</code> in <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </p>
|
||||
<p>boost::pfr::flat_get — Returns reference or const reference to a field with index <code class="computeroutput">I</code> in <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="identifier">flat_get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="identifier">flat_get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519391888"></a><h2>Description</h2>
|
||||
<a name="idm45630904869168"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span> <span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -47,7 +48,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -55,7 +56,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,84 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_greater</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_equal_to.html" title="Struct template flat_equal_to">
|
||||
<link rel="next" href="flat_greater_equal.html" title="Struct template flat_greater_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_greater"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_greater</span></h2>
|
||||
<p>boost::pfr::flat_greater — std::greater like flattening comparator </p>
|
||||
<p>boost::pfr::flat_greater — std::greater like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_greater.html" title="Struct template flat_greater">flat_greater</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_greater.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_greater.html#idm46104916924976-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater.html#idm46104916924480-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater.html#idm46104916918480-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_greater.html#idm46672728919264-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater.html#idm46672728918768-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518248528"></a><h2>Description</h2>
|
||||
<a name="idm45630904330800"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946518248112"></a><h3>
|
||||
<a name="idm46104916924976-bb"></a><code class="computeroutput">flat_greater</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916924480-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904330384"></a><h3>
|
||||
<a name="idm46672728919264-bb"></a><code class="computeroutput">flat_greater</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728918768-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> eqeal to the same fields of <span class="bold"><strong>y</strong></span> </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916918480-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -86,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,84 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_greater_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_greater.html" title="Struct template flat_greater">
|
||||
<link rel="next" href="flat_hash.html" title="Struct template flat_hash">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_greater_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_greater_equal</span></h2>
|
||||
<p>boost::pfr::flat_greater_equal — std::greater_equal like flattening comparator </p>
|
||||
<p>boost::pfr::flat_greater_equal — std::greater_equal like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_greater_equal.html" title="Struct template flat_greater_equal">flat_greater_equal</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_greater_equal.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_greater_equal.html#idm46104916908960-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater_equal.html#idm46104916908464-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater_equal.html#idm46104916901216-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_greater_equal.html#idm46672728910000-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_greater_equal.html#idm46672728909504-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518166672"></a><h2>Description</h2>
|
||||
<a name="idm45630904287216"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946518166256"></a><h3>
|
||||
<a name="idm46104916908960-bb"></a><code class="computeroutput">flat_greater_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916908464-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904286800"></a><h3>
|
||||
<a name="idm46672728910000-bb"></a><code class="computeroutput">flat_greater_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728909504-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> eqeal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span> . </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916901216-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -86,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_hash</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_greater_equal.html" title="Struct template flat_greater_equal">
|
||||
<link rel="next" href="flat_less.html" title="Struct template flat_less">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_hash"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_hash</span></h2>
|
||||
<p>boost::pfr::flat_hash — std::hash like flattening functor </p>
|
||||
<p>boost::pfr::flat_hash — std::hash like flattening functor </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_hash.html" title="Struct template flat_hash">flat_hash</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_hash.html#idm46104916893584-bb">public member functions</a></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="flat_hash.html#idm46104916893088-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_hash.html#idm46672728899744-bb">public member functions</a></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="flat_hash.html#idm46672728899248-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518107088"></a><h2>Description</h2>
|
||||
<a name="idm45630904245232"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946518106672"></a><h3>
|
||||
<a name="idm46104916893584-bb"></a><code class="computeroutput">flat_hash</code> public member functions</h3>
|
||||
<a name="idm45630904244816"></a><h3>
|
||||
<a name="idm46672728899744-bb"></a><code class="computeroutput">flat_hash</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="idm46104916893088-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<pre class="literallayout"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="idm46672728899248-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p>hash value of <span class="bold"><strong>x</strong></span> </p></td>
|
||||
<td><p>hash value of <span class="bold"><strong>x</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
@@ -59,7 +59,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -67,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,84 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_less</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_hash.html" title="Struct template flat_hash">
|
||||
<link rel="next" href="flat_less_equal.html" title="Struct template flat_less_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_less"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_less</span></h2>
|
||||
<p>boost::pfr::flat_less — std::less like flattening comparator </p>
|
||||
<p>boost::pfr::flat_less — std::less like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_less.html" title="Struct template flat_less">flat_less</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_less.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_less.html#idm46104916886688-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less.html#idm46104916886192-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less.html#idm46104916880192-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_less.html#idm46672728893472-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less.html#idm46672728892976-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518048864"></a><h2>Description</h2>
|
||||
<a name="idm45630904206128"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946518048448"></a><h3>
|
||||
<a name="idm46104916886688-bb"></a><code class="computeroutput">flat_less</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916886192-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904205712"></a><h3>
|
||||
<a name="idm46672728893472-bb"></a><code class="computeroutput">flat_less</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728892976-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> eqeal to the same fields of <span class="bold"><strong>y</strong></span> </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916880192-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -86,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,84 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_less_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_less.html" title="Struct template flat_less">
|
||||
<link rel="next" href="flat_not_equal.html" title="Struct template flat_not_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_less_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_less_equal</span></h2>
|
||||
<p>boost::pfr::flat_less_equal — std::less_equal like flattening comparator </p>
|
||||
<p>boost::pfr::flat_less_equal — std::less_equal like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_less_equal.html" title="Struct template flat_less_equal">flat_less_equal</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_less_equal.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_less_equal.html#idm46104916870672-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less_equal.html#idm46104916870176-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less_equal.html#idm46104916862928-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_less_equal.html#idm46672728884208-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_less_equal.html#idm46672728883712-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946517967312"></a><h2>Description</h2>
|
||||
<a name="idm45630904162592"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946517966896"></a><h3>
|
||||
<a name="idm46104916870672-bb"></a><code class="computeroutput">flat_less_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916870176-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904162176"></a><h3>
|
||||
<a name="idm46672728884208-bb"></a><code class="computeroutput">flat_less_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728883712-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> eqeal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span> . </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916862928-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -86,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,83 +1,65 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template flat_not_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">
|
||||
<link rel="prev" href="flat_less_equal.html" title="Struct template flat_less_equal">
|
||||
<link rel="next" href="flat_write.html" title="Function template flat_write">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a>
|
||||
<a accesskey="p" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_not_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template flat_not_equal</span></h2>
|
||||
<p>boost::pfr::flat_not_equal — std::not_equal like flattening comparator </p>
|
||||
<p>boost::pfr::flat_not_equal — std::not_equal like flattening comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp" title="Header <boost/pfr/functors.hpp>">boost/pfr/functors.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp" title="Header <boost/pfr/flat/functors.hpp>">boost/pfr/flat/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="flat_not_equal.html" title="Struct template flat_not_equal">flat_not_equal</a> <span class="special">{</span>
|
||||
<span class="comment">// types</span>
|
||||
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">true_type</span> <a name="boost.pfr.flat_not_equal.is_transparent"></a><span class="identifier">is_transparent</span><span class="special">;</span> <span class="comment">// This typedef exists only if T <span class="bold"><strong>is</strong></span> void. </span>
|
||||
|
||||
<span class="comment">// <a class="link" href="flat_not_equal.html#idm46104916853408-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_not_equal.html#idm46104916852912-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_not_equal.html#idm46104916848160-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="comment">// <a class="link" href="flat_not_equal.html#idm46672728873696-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="flat_not_equal.html#idm46672728873200-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946517884256"></a><h2>Description</h2>
|
||||
<a name="idm45630904117824"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm44946517883840"></a><h3>
|
||||
<a name="idm46104916853408-bb"></a><code class="computeroutput">flat_not_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46104916852912-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<a name="idm45630904117408"></a><h3>
|
||||
<a name="idm46672728873696-bb"></a><code class="computeroutput">flat_not_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672728873200-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type. </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if at least one field <span class="bold"><strong>x</strong></span> not equals the field with same index of <span class="bold"><strong>y</strong></span> </p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if at least one field <span class="bold"><strong>x</strong></span> not equals the field with same index of <span class="bold"><strong>y</strong></span>.</p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> V<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="keyword">bool</span> <a name="idm46104916848160-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">V</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre>
|
||||
<p>This operator allows comparison of <span class="bold"><strong>x</strong></span> and <span class="bold"><strong>y</strong></span> that have different type.
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Requires:</span></p></td>
|
||||
<td><p>Exists only if T <span class="bold"><strong>is</strong></span> void. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li>
|
||||
</ol></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -85,7 +67,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.functors_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a>
|
||||
<a accesskey="p" href="flat_less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_read</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp" title="Header <boost/pfr/flat/io.hpp>">
|
||||
<link rel="prev" href="flat_write.html" title="Function template flat_write">
|
||||
<link rel="next" href="tuple_element.html" title="Type definition tuple_element">
|
||||
<link rel="next" href="flat_tuple_size.html" title="Type definition flat_tuple_size">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_read"></a><div class="titlepage"></div>
|
||||
@@ -29,14 +29,15 @@
|
||||
<p>boost::pfr::flat_read</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp" title="Header <boost/pfr/flat/io.hpp>">boost/pfr/flat/io.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">flat_read</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519231936"></a><h2>Description</h2>
|
||||
<p>Reads <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> POD <code class="computeroutput">value</code> from stream <code class="computeroutput">in</code></p>
|
||||
<a name="idm45630903747040"></a><h2>Description</h2>
|
||||
<p>Reads <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> POD <code class="computeroutput">value</code> from stream <code class="computeroutput">in</code></p>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span><span class="special">;</span>
|
||||
@@ -51,7 +52,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -59,7 +60,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_structure_tie</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_structure_to_tuple.html" title="Function template flat_structure_to_tuple">
|
||||
<link rel="next" href="flat_write.html" title="Function template flat_write">
|
||||
<link rel="next" href="flat_for_each_field.html" title="Function template flat_for_each_field">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_structure_tie"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template flat_structure_tie</span></h2>
|
||||
<p>boost::pfr::flat_structure_tie — Creates an <code class="computeroutput">std::tuple</code> with lvalue references to fields of a <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </p>
|
||||
<p>boost::pfr::flat_structure_tie — Creates an <code class="computeroutput">std::tuple</code> with lvalue references to fields of a <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <span class="identifier">flat_structure_tie</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519313552"></a><h2>Description</h2>
|
||||
<a name="idm45630904779744"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> <code class="computeroutput">T</code> must not have const fields.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
@@ -47,7 +48,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -55,7 +56,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_structure_to_tuple</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_get.html" title="Function flat_get">
|
||||
<link rel="next" href="flat_structure_tie.html" title="Function template flat_structure_tie">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_structure_to_tuple"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template flat_structure_to_tuple</span></h2>
|
||||
<p>boost::pfr::flat_structure_to_tuple — Creates an <code class="computeroutput">std::tuple</code> from a <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </p>
|
||||
<p>boost::pfr::flat_structure_to_tuple — Creates an <code class="computeroutput">std::tuple</code> from a <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <span class="identifier">flat_structure_to_tuple</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519351792"></a><h2>Description</h2>
|
||||
<a name="idm45630904823424"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span> <span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -46,7 +47,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -54,7 +55,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
63
boost/pfr/flat_tie_from_structure.html
Normal file
63
boost/pfr/flat_tie_from_structure.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_tie_from_structure</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_for_each_field.html" title="Function template flat_for_each_field">
|
||||
<link rel="next" href="../../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PF_idm46672728940944.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_tie_from_structure"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template flat_tie_from_structure</span></h2>
|
||||
<p>boost::pfr::flat_tie_from_structure — Create a tuple of lvalue references capable of de-structuring assignment from <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> fields of an aggregate T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">flat_tie_from_structure</span><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630904678400"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">f</span><span class="special">(</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">struct</span> <span class="special">{</span> <span class="keyword">struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span> <span class="special">}</span> <span class="identifier">p</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span> <span class="identifier">res</span> <span class="special">{</span> <span class="special">{</span> <span class="number">4</span><span class="special">,</span> <span class="number">5</span> <span class="special">}</span><span class="special">,</span> <span class="number">6</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="identifier">res</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="keyword">auto</span> <span class="special">[</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">s</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">flat_structure_tie</span><span class="special">(</span><span class="identifier">f</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">flat_tie_from_structure</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">s</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PF_idm46672728940944.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,40 +1,40 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition flat_tuple_element</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="prev" href="../../boost_pfr_header_reference.html" title="Boost.PFR Header Reference">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="tuple_size_v.html" title="Global tuple_size_v">
|
||||
<link rel="next" href="flat_tuple_element_t.html" title="Type definition flat_tuple_element_t">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../boost_pfr_header_reference.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_tuple_element"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition flat_tuple_element</span></h2>
|
||||
<p>flat_tuple_element — <code class="computeroutput">flat_tuple_element</code> has a `typedef type-of-the-field-with-index-I-in- <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a>-T type;` </p>
|
||||
<p>flat_tuple_element — <code class="computeroutput">flat_tuple_element</code> has a `typedef type-of-the-field-with-index-I-in- <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a>-T type;` </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">flat_tuple_element</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519487488"></a><h2>Description</h2>
|
||||
<a name="idm45630904934912"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_element</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="identifier">my_structure</span><span class="special">></span><span class="special">::</span><span class="identifier">type</span> <span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -43,7 +43,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -51,7 +51,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../../boost_pfr_header_reference.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition flat_tuple_element_t</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">
|
||||
<link rel="prev" href="flat_tuple_element.html" title="Type definition flat_tuple_element">
|
||||
<link rel="next" href="flat_tuple_size.html" title="Type definition flat_tuple_size">
|
||||
<link rel="next" href="flat_get.html" title="Function flat_get">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_tuple_element_t"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition flat_tuple_element_t</span></h2>
|
||||
<p>flat_tuple_element_t — Type of a field with index <code class="computeroutput">I</code> in <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a><code class="computeroutput">T</code></p>
|
||||
<p>flat_tuple_element_t — Type of a field with index <code class="computeroutput">I</code> in <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a><code class="computeroutput">T</code></p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp" title="Header <boost/pfr/flat/core.hpp>">boost/pfr/flat/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">flat_tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">flat_tuple_element_t</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519464064"></a><h2>Description</h2>
|
||||
<a name="idm45630904908768"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_element_t</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="identifier">my_structure</span><span class="special">></span> <span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -43,7 +43,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -51,7 +51,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition flat_tuple_size</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="prev" href="flat_tuple_element_t.html" title="Type definition flat_tuple_element_t">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp" title="Header <boost/pfr/flat/tuple_size.hpp>">
|
||||
<link rel="prev" href="flat_read.html" title="Function template flat_read">
|
||||
<link rel="next" href="flat_tuple_size_v.html" title="Global flat_tuple_size_v">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_tuple_size"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition flat_tuple_size</span></h2>
|
||||
<p>flat_tuple_size — Has a static const member variable <code class="computeroutput">value</code> that contains fields count in a <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </p>
|
||||
<p>flat_tuple_size</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp" title="Header <boost/pfr/flat/tuple_size.hpp>">boost/pfr/flat/tuple_size.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">flat_tuple_size</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519446352"></a><h2>Description</h2>
|
||||
<a name="idm45630903476816"></a><h2>Description</h2>
|
||||
<p>Has a static const member variable <code class="computeroutput">value</code> that contains fields count in a <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> T.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_size</span><span class="special"><</span><span class="identifier">my_structure</span><span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">></span> <span class="identifier">a</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -43,7 +44,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -51,7 +52,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Global flat_tuple_size_v</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp" title="Header <boost/pfr/flat/tuple_size.hpp>">
|
||||
<link rel="prev" href="flat_tuple_size.html" title="Type definition flat_tuple_size">
|
||||
<link rel="next" href="flat_get.html" title="Function flat_get">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_tuple_size_v"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Global flat_tuple_size_v</span></h2>
|
||||
<p>boost::pfr::flat_tuple_size_v — <code class="computeroutput">flat_tuple_size_v</code> is a template variable that contains fields count in a <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </p>
|
||||
<p>boost::pfr::flat_tuple_size_v</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp" title="Header <boost/pfr/flat/tuple_size.hpp>">boost/pfr/flat/tuple_size.hpp</a>>
|
||||
|
||||
</span><span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> flat_tuple_size_v<span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519427584"></a><h2>Description</h2>
|
||||
<a name="idm45630903455424"></a><h2>Description</h2>
|
||||
<p><code class="computeroutput">flat_tuple_size_v</code> is a template variable that contains fields count in a <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> T.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_size_v</span><span class="special"><</span><span class="identifier">my_structure</span><span class="special">></span> <span class="special">></span> <span class="identifier">a</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -50,7 +50,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,41 +1,42 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template flat_write</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">
|
||||
<link rel="prev" href="flat_structure_tie.html" title="Function template flat_structure_tie">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp" title="Header <boost/pfr/flat/io.hpp>">
|
||||
<link rel="prev" href="flat_not_equal.html" title="Struct template flat_not_equal">
|
||||
<link rel="next" href="flat_read.html" title="Function template flat_read">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.flat_write"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template flat_write</span></h2>
|
||||
<p>boost::pfr::flat_write — Writes <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> POD <code class="computeroutput">value</code> to <code class="computeroutput">out</code></p>
|
||||
<p>boost::pfr::flat_write — Writes <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">flattened</a> POD <code class="computeroutput">value</code> to <code class="computeroutput">out</code></p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp" title="Header <boost/pfr/core.hpp>">boost/pfr/core.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp" title="Header <boost/pfr/flat/io.hpp>">boost/pfr/flat/io.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">flat_write</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519267328"></a><h2>Description</h2>
|
||||
<a name="idm45630903787424"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span><span class="special">{</span><span class="number">12</span><span class="special">,</span> <span class="number">13</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -46,7 +47,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -54,7 +55,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="flat_not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.flat.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
91
boost/pfr/for_each_field.html
Normal file
91
boost/pfr/for_each_field.html
Normal file
@@ -0,0 +1,91 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template for_each_field</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="structure_tie.html" title="Function template structure_tie">
|
||||
<link rel="next" href="tie_from_structure.html" title="Function template tie_from_structure">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.for_each_field"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template for_each_field</span></h2>
|
||||
<p>boost::pfr::for_each_field</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">></span> <span class="keyword">void</span> <span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&&</span> value<span class="special">,</span> <span class="identifier">F</span> <span class="special">&&</span> func<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630906266432"></a><h2>Description</h2>
|
||||
<p>Calls <code class="computeroutput">func</code> for each field of a <code class="computeroutput">value</code>.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 constexpr aggregate intializable type</a>.</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="keyword">int</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
|
||||
<span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">my_struct</span><span class="special">{</span><span class="number">20</span><span class="special">,</span> <span class="number">22</span><span class="special">}</span><span class="special">,</span> <span class="special">[</span><span class="special">&</span><span class="identifier">sum</span><span class="special">]</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">field</span><span class="special">;</span> <span class="special">}</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">sum</span> <span class="special">==</span> <span class="number">42</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Parameters:</span></p></td>
|
||||
<td><div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><p><span class="term"><code class="computeroutput">func</code></span></p></td>
|
||||
<td>
|
||||
<p>must have one of the following signatures:</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem"><p>any_return_type func(U&& field) // field of value is perfect forwarded to function</p></li>
|
||||
<li class="listitem"><p>any_return_type func(U&& field, std::size_t i)</p></li>
|
||||
<li class="listitem"><p>any_return_type func(U&& value, I i) // Here I is an <code class="computeroutput">std::integral_constant<size_t, field_index></code></p></li>
|
||||
</ul></div>
|
||||
<p>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p><span class="term"><code class="computeroutput">value</code></span></p></td>
|
||||
<td><p>To each field of this variable will be the <code class="computeroutput">func</code> applied.</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tie_from_structure.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,43 +1,43 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function get</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="tuple_element_t.html" title="Type definition tuple_element_t">
|
||||
<link rel="next" href="structure_to_tuple.html" title="Function template structure_to_tuple">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.get"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function get</span></h2>
|
||||
<p>boost::pfr::get — Returns reference or const reference to a field with index <code class="computeroutput">I</code> in aggregate T. </p>
|
||||
<p>boost::pfr::get — Returns reference or const reference to a field with index <code class="computeroutput">I</code> in aggregate T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519051232"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630906397888"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 flat POD or C++14 with not disabled Loophole</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span> <span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -49,7 +49,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -57,7 +57,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
73
boost/pfr/greater.html
Normal file
73
boost/pfr/greater.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template greater</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="equal_to.html" title="Struct template equal_to">
|
||||
<link rel="next" href="greater_equal.html" title="Struct template greater_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.greater"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template greater</span></h2>
|
||||
<p>boost::pfr::greater — std::greater like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="greater.html" title="Struct template greater">greater</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="greater.html#idm46672729168512-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="greater.html#idm46672729168016-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905876512"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905876096"></a><h3>
|
||||
<a name="idm46672729168512-bb"></a><code class="computeroutput">greater</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729168016-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="equal_to.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/greater_equal.html
Normal file
73
boost/pfr/greater_equal.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template greater_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="greater.html" title="Struct template greater">
|
||||
<link rel="next" href="hash.html" title="Struct template hash">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.greater_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template greater_equal</span></h2>
|
||||
<p>boost::pfr::greater_equal — std::greater_equal like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="greater_equal.html" title="Struct template greater_equal">greater_equal</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="greater_equal.html#idm46672729160256-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="greater_equal.html#idm46672729159760-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905835856"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905835440"></a><h3>
|
||||
<a name="idm46672729160256-bb"></a><code class="computeroutput">greater_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729159760-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> greater than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="greater.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/hash.html
Normal file
73
boost/pfr/hash.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template hash</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="greater_equal.html" title="Struct template greater_equal">
|
||||
<link rel="next" href="less.html" title="Struct template less">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.hash"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template hash</span></h2>
|
||||
<p>boost::pfr::hash — std::hash like functor </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="hash.html" title="Struct template hash">hash</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="hash.html#idm46672729151008-bb">public member functions</a></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="hash.html#idm46672729150512-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905796672"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905796256"></a><h3>
|
||||
<a name="idm46672729151008-bb"></a><code class="computeroutput">hash</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="idm46672729150512-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p>hash value of <span class="bold"><strong>x</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="greater_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/less.html
Normal file
73
boost/pfr/less.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template less</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="hash.html" title="Struct template hash">
|
||||
<link rel="next" href="less_equal.html" title="Struct template less_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.less"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template less</span></h2>
|
||||
<p>boost::pfr::less — std::less like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="less.html" title="Struct template less">less</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="less.html#idm46672729145744-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="less.html#idm46672729145248-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905760528"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905760112"></a><h3>
|
||||
<a name="idm46672729145744-bb"></a><code class="computeroutput">less</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729145248-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="hash.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/less_equal.html
Normal file
73
boost/pfr/less_equal.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template less_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="less.html" title="Struct template less">
|
||||
<link rel="next" href="not_equal.html" title="Struct template not_equal">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.less_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template less_equal</span></h2>
|
||||
<p>boost::pfr::less_equal — std::less_equal like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="less_equal.html" title="Struct template less_equal">less_equal</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="less_equal.html#idm46672729137488-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="less_equal.html#idm46672729136992-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905720080"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905719664"></a><h3>
|
||||
<a name="idm46672729137488-bb"></a><code class="computeroutput">less_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729136992-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if field of <span class="bold"><strong>x</strong></span> less than the field with same index of <span class="bold"><strong>y</strong></span> and all previous fields of <span class="bold"><strong>x</strong></span> equal to the same fields of <span class="bold"><strong>y</strong></span>; or if each field of <span class="bold"><strong>x</strong></span> equals the field with same index of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="less.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
boost/pfr/not_equal.html
Normal file
73
boost/pfr/not_equal.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Struct template not_equal</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">
|
||||
<link rel="prev" href="less_equal.html" title="Struct template less_equal">
|
||||
<link rel="next" href="write.html" title="Function template write">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.not_equal"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Struct template not_equal</span></h2>
|
||||
<p>boost::pfr::not_equal — std::not_equal like comparator </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp" title="Header <boost/pfr/precise/functors.hpp>">boost/pfr/precise/functors.hpp</a>>
|
||||
|
||||
</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <a class="link" href="not_equal.html" title="Struct template not_equal">not_equal</a> <span class="special">{</span>
|
||||
|
||||
<span class="comment">// <a class="link" href="not_equal.html#idm46672729127984-bb">public member functions</a></span>
|
||||
<span class="keyword">bool</span> <a class="link" href="not_equal.html#idm46672729127488-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630905678256"></a><h2>Description</h2>
|
||||
<div class="refsect2">
|
||||
<a name="idm45630905677840"></a><h3>
|
||||
<a name="idm46672729127984-bb"></a><code class="computeroutput">not_equal</code> public member functions</h3>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
|
||||
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46672729127488-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> y<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
|
||||
<p>
|
||||
</p>
|
||||
<div class="variablelist"><table border="0">
|
||||
<col align="left" valign="top">
|
||||
<tbody><tr>
|
||||
<td><p><span class="term">Returns:</span></p></td>
|
||||
<td><p><span class="bold"><strong>true</strong></span> if at least one field <span class="bold"><strong>x</strong></span> not equals the field with same index of <span class="bold"><strong>y</strong></span>. </p></td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
</li></ol></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="less_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.functors_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,26 +1,26 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template read</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp" title="Header <boost/pfr/precise/io.hpp>">
|
||||
<link rel="prev" href="write.html" title="Function template write">
|
||||
<link rel="next" href="tuple_size.html" title="Type definition tuple_size">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.read"></a><div class="titlepage"></div>
|
||||
@@ -29,15 +29,15 @@
|
||||
<p>boost::pfr::read</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp" title="Header <boost/pfr/precise/io.hpp>">boost/pfr/precise/io.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">read</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518890272"></a><h2>Description</h2>
|
||||
<a name="idm45630905325632"></a><h2>Description</h2>
|
||||
<p>Reads aggregate <code class="computeroutput">value</code> from stream <code class="computeroutput">in</code></p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 constexpr aggregate intializable type</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span><span class="special">;</span>
|
||||
@@ -52,7 +52,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -60,7 +60,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="write.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template structure_tie</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="structure_to_tuple.html" title="Function template structure_to_tuple">
|
||||
<link rel="next" href="write.html" title="Function template write">
|
||||
<link rel="next" href="for_each_field.html" title="Function template for_each_field">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.structure_tie"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template structure_tie</span></h2>
|
||||
<p>boost::pfr::structure_tie — Creates an <code class="computeroutput">std::tuple</code> with lvalue references to fields of an aggregate T. </p>
|
||||
<p>boost::pfr::structure_tie — Creates an <code class="computeroutput">std::tuple</code> with lvalue references to fields of an aggregate T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <span class="identifier">structure_tie</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518971392"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630906308848"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 flat POD or C++14 with not disabled Loophole</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span><span class="special">;</span>
|
||||
<span class="identifier">tie</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">short</span><span class="special">></span><span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">structure_tie</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">short</span><span class="special">></span><span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">s</span> <span class="special">==</span> <span class="number">11</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -55,7 +55,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="write.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="structure_to_tuple.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template structure_to_tuple</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="get.html" title="Function get">
|
||||
<link rel="next" href="structure_tie.html" title="Function template structure_tie">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.structure_to_tuple"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template structure_to_tuple</span></h2>
|
||||
<p>boost::pfr::structure_to_tuple — Creates an <code class="computeroutput">std::tuple</code> from an aggregate T. </p>
|
||||
<p>boost::pfr::structure_to_tuple — Creates an <code class="computeroutput">std::tuple</code> from an aggregate T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <span class="identifier">structure_to_tuple</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> val<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519010384"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630906352352"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 flat POD or C++14 with not disabled Loophole</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span> <span class="special">{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -55,7 +55,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
63
boost/pfr/tie_from_structure.html
Normal file
63
boost/pfr/tie_from_structure.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template tie_from_structure</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="for_each_field.html" title="Function template for_each_field">
|
||||
<link rel="next" href="../../BOOST_PF_idm46672729188000.html" title="Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PF_idm46672729188000.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.tie_from_structure"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template tie_from_structure</span></h2>
|
||||
<p>boost::pfr::tie_from_structure — Create a tuple of lvalue references capable of de-structuring assignment from fields of an aggregate T. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">tie_from_structure</span><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm45630906211344"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">f</span><span class="special">(</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">struct</span> <span class="special">{</span> <span class="keyword">struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span> <span class="special">}</span> <span class="identifier">p</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span> <span class="identifier">res</span> <span class="special">{</span> <span class="special">{</span> <span class="number">4</span><span class="special">,</span> <span class="number">5</span> <span class="special">}</span><span class="special">,</span> <span class="number">6</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="identifier">res</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="keyword">auto</span> <span class="special">[</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">s</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">tie_from_structure</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">s</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">(</span><span class="special">)</span><span class="special">;</span>
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="for_each_field.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PF_idm46672729188000.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,41 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition tuple_element</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="prev" href="flat_read.html" title="Function template flat_read">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="../../boost_pfr/reference.html" title="Reference">
|
||||
<link rel="next" href="tuple_element_t.html" title="Type definition tuple_element_t">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="../../boost_pfr/reference.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.tuple_element"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition tuple_element</span></h2>
|
||||
<p>tuple_element — <code class="computeroutput">tuple_element</code> has a <code class="computeroutput">typedef type-of-a-field-with-index-I-in-aggregate-T type;</code></p>
|
||||
<p>tuple_element — <code class="computeroutput">tuple_element</code> has a <code class="computeroutput">typedef type-of-a-field-with-index-I-in-aggregate-T type;</code></p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">tuple_element</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519112240"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630906467008"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 flat POD or C++14 with not disabled Loophole</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_element</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="identifier">my_structure</span><span class="special">></span><span class="special">::</span><span class="identifier">type</span> <span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -44,7 +44,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -52,7 +52,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="flat_read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="../../boost_pfr/reference.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_element_t.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition tuple_element_t</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">
|
||||
<link rel="prev" href="tuple_element.html" title="Type definition tuple_element">
|
||||
<link rel="next" href="get.html" title="Function get">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.tuple_element_t"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition tuple_element_t</span></h2>
|
||||
<p>tuple_element_t — Type of a field with index <code class="computeroutput">I</code> in aggregate <code class="computeroutput">T</code>. </p>
|
||||
<p>tuple_element_t — Type of a field with index <code class="computeroutput">I</code> in aggregate <code class="computeroutput">T</code>. </p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost/pfr/precise/core.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">tuple_element_t</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946519088432"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630906439744"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 flat POD or C++14 with not disabled Loophole</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_element_t</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="identifier">my_structure</span><span class="special">></span> <span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -44,7 +44,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -52,7 +52,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.core_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,42 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Type definition tuple_size</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp" title="Header <boost/pfr/fields_count.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp" title="Header <boost/pfr/precise/tuple_size.hpp>">
|
||||
<link rel="prev" href="read.html" title="Function template read">
|
||||
<link rel="next" href="tuple_size_v.html" title="Global tuple_size_v">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.tuple_size"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Type definition tuple_size</span></h2>
|
||||
<p>tuple_size — Has a static const member variable <code class="computeroutput">value</code> that constins fields count in a T. Works for any T that supports aggregate initialization even if T is not POD. <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">Flattens</a> only multidimensional arrays. </p>
|
||||
<p>tuple_size</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp" title="Header <boost/pfr/fields_count.hpp>">boost/pfr/fields_count.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp" title="Header <boost/pfr/precise/tuple_size.hpp>">boost/pfr/precise/tuple_size.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <span class="identifier">tuple_size</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518838784"></a><h2>Description</h2>
|
||||
<a name="idm45630905061344"></a><h2>Description</h2>
|
||||
<p>Has a static const member variable <code class="computeroutput">value</code> that contains fields count in a T. Works for any T that supports aggregate initialization even if T is not POD. <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">Flattens</a> only multidimensional arrays.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++14.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_size</span><span class="special"><</span><span class="identifier">my_structure</span><span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">></span> <span class="identifier">a</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -43,7 +45,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -51,7 +53,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tuple_size_v.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,39 +1,41 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Global tuple_size_v</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp" title="Header <boost/pfr/fields_count.hpp>">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp" title="Header <boost/pfr/precise/tuple_size.hpp>">
|
||||
<link rel="prev" href="tuple_size.html" title="Type definition tuple_size">
|
||||
<link rel="next" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">
|
||||
<link rel="next" href="flat_tuple_element.html" title="Type definition flat_tuple_element">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.tuple_size_v"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Global tuple_size_v</span></h2>
|
||||
<p>boost::pfr::tuple_size_v — <code class="computeroutput">tuple_size_v</code> is a template variable that contains fields count in a T and works for any T that supports aggregate initialization even if T is not POD. <a class="link" href="../../boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">Flattens</a> only multidimensional arrays. </p>
|
||||
<p>boost::pfr::tuple_size_v</p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp" title="Header <boost/pfr/fields_count.hpp>">boost/pfr/fields_count.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp" title="Header <boost/pfr/precise/tuple_size.hpp>">boost/pfr/precise/tuple_size.hpp</a>>
|
||||
|
||||
</span><span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> tuple_size_v<span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518819936"></a><h2>Description</h2>
|
||||
<a name="idm45630905038992"></a><h2>Description</h2>
|
||||
<p><code class="computeroutput">tuple_size_v</code> is a template variable that contains fields count in a T and works for any T that supports aggregate initialization even if T is not POD. <a class="link" href="../../boost_pfr/tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">Flattens</a> only multidimensional arrays.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++14.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_size_v</span><span class="special"><</span><span class="identifier">my_structure</span><span class="special">></span> <span class="special">></span> <span class="identifier">a</span><span class="special">;</span>
|
||||
</pre>
|
||||
@@ -42,7 +44,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -50,7 +52,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_PFR_FLAT_FUNCTIONS_FOR.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="tuple_size.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.tuple_size_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Function template write</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">
|
||||
<link rel="prev" href="structure_tie.html" title="Function template structure_tie">
|
||||
<link rel="home" href="../../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp" title="Header <boost/pfr/precise/io.hpp>">
|
||||
<link rel="prev" href="not_equal.html" title="Struct template not_equal">
|
||||
<link rel="next" href="read.html" title="Function template read">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="refentry">
|
||||
<a name="boost.pfr.write"></a><div class="titlepage"></div>
|
||||
<div class="refnamediv">
|
||||
<h2><span class="refentrytitle">Function template write</span></h2>
|
||||
<p>boost::pfr::write — Writes aggregate <code class="computeroutput">value</code> to <code class="computeroutput">out</code></p>
|
||||
<p>boost::pfr::write — Writes aggregate <code class="computeroutput">value</code> to <code class="computeroutput">out</code></p>
|
||||
</div>
|
||||
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp" title="Header <boost/pfr/core17.hpp>">boost/pfr/core17.hpp</a>>
|
||||
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp" title="Header <boost/pfr/precise/io.hpp>">boost/pfr/precise/io.hpp</a>>
|
||||
|
||||
</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">write</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre></div>
|
||||
<div class="refsect1">
|
||||
<a name="idm44946518926416"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17.</p>
|
||||
<a name="idm45630905366064"></a><h2>Description</h2>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="../../boost_pfr/limitations.html" title="Limitations">C++14 constexpr aggregate intializable type</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct</span> <span class="identifier">s</span><span class="special">{</span><span class="number">12</span><span class="special">,</span> <span class="number">13</span><span class="special">}</span><span class="special">;</span>
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -55,7 +55,7 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="structure_tie.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr_header_reference.html#header.boost.pfr.core17_hpp"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="read.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
<a accesskey="p" href="not_equal.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_pfr/reference.html#header.boost.pfr.precise.io_hpp"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="read.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
56
boost_pfr/acknowledgements.html
Normal file
56
boost_pfr/acknowledgements.html
Normal file
@@ -0,0 +1,56 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Acknowledgements</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="how_it_works.html" title="How it works">
|
||||
<link rel="next" href="reference.html" title="Reference">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
Great thanks to Bruno Dutra for showing the technique to precisely reflect
|
||||
aggregate initializable type in C++14 <a href="https://github.com/apolukhin/magic_get/issues/5" target="_top">Manual
|
||||
type registering/structured bindings might be unnecessary</a>.
|
||||
</p>
|
||||
<p>
|
||||
Great thanks to Alexandr Poltavsky for initial implementation the <a class="link" href="configuration_macro.html" title="Configuration Macro"><span class="bold"><strong>Loophole</strong></span></a> technique and for describing it <a href="http://alexpolt.github.io/type-loophole.html" target="_top">in his blog</a>.
|
||||
</p>
|
||||
<p>
|
||||
Great thanks to Chris Beck for implementing the detect-offsets-and-get-field-address
|
||||
functionality that avoids Undefined Behavior of reinterpret_casting layout
|
||||
compatible structures.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
123
boost_pfr/configuration_macro.html
Normal file
123
boost_pfr/configuration_macro.html
Normal file
@@ -0,0 +1,123 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Configuration Macro</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="tutorial.html" title="Tutorial">
|
||||
<link rel="next" href="limitations.html" title="Limitations">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tutorial.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limitations.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.configuration_macro"></a><a class="link" href="configuration_macro.html" title="Configuration Macro">Configuration Macro</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
By default Boost.PFR <span class="bold"><strong>auto-detects your compiler abilities</strong></span>
|
||||
and automatically defines the configuration macro into appropriate values.
|
||||
If you wish to override that behavior, just define:
|
||||
</p>
|
||||
<div class="table">
|
||||
<a name="boost_pfr.configuration_macro.linkmacro"></a><p class="title"><b>Table 1.2. Macros</b></p>
|
||||
<div class="table-contents"><table class="table" summary="Macros">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Macro name
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Effect
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<span class="bold"><strong>BOOST_PFR_USE_CPP17</strong></span>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Define to <code class="computeroutput"><span class="number">1</span></code> if you wish
|
||||
to use structured bindings and other C++17 features for reflection.
|
||||
Define to <code class="computeroutput"><span class="number">0</span></code> otherwise.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<span class="bold"><strong>BOOST_PFR_USE_LOOPHOLE</strong></span>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Define to <code class="computeroutput"><span class="number">1</span></code> if you wish
|
||||
to exploit <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#2118" target="_top">CWG
|
||||
2118</a> for reflection. Define to <code class="computeroutput"><span class="number">0</span></code>
|
||||
otherwise.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<span class="bold"><strong>BOOST_PFR_USE_STD_MAKE_INTEGRAL_SEQUENCE</strong></span>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Define to <code class="computeroutput"><span class="number">0</span></code> if you are
|
||||
hit by the template instantiation depth issues with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_integer_sequence</span></code> and wish
|
||||
to use PFR version of that metafunction. Define to <code class="computeroutput"><span class="number">1</span></code> otherwize.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
<br class="table-break"><p>
|
||||
Library prefers to use structured bindings for reflection if they are available,
|
||||
otherwise falls back to <span class="bold"><strong>Loophole</strong></span>.
|
||||
</p>
|
||||
<p>
|
||||
Note that disabling <span class="bold"><strong>Loophole</strong></span> in C++14 significantly
|
||||
limits the reflection abilities of the library. See next section for more info
|
||||
on limitations.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="tutorial.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limitations.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
172
boost_pfr/how_it_works.html
Normal file
172
boost_pfr/how_it_works.html
Normal file
@@ -0,0 +1,172 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>How it works</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="limitations.html" title="Limitations">
|
||||
<link rel="next" href="acknowledgements.html" title="Acknowledgements">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="limitations.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.how_it_works"></a><a class="link" href="how_it_works.html" title="How it works">How it works</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
Short description:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
Flat functions:
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
at compile-time: use aggregate initialization to detect fields count
|
||||
in user-provided structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: make a structure that is convertible to anything
|
||||
and remember types it has been converted to during aggregate initialization
|
||||
of user-provided structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: using knowledge from previous steps create a tuple
|
||||
with exactly the same layout as in user-provided structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: find offsets for each field in user-provided structure
|
||||
using the tuple from previous step
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at run-time: get pointer to each field, knowing the structure address
|
||||
and each field offset
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at run-time: a tuple of references to fields is returned => all
|
||||
the tuple methods are available for the structure
|
||||
</li>
|
||||
</ol></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Precise functions:
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
at compile-time: use aggregate initialization to detect fields count
|
||||
in user-provided structure
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="circle">
|
||||
<li class="listitem">
|
||||
C++17:
|
||||
<div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem">
|
||||
at compile-time: structured bindings are used to decompose
|
||||
a type <code class="computeroutput"><span class="identifier">T</span></code>
|
||||
to known amount of fields
|
||||
</li></ol></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
C++14:
|
||||
<div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem">
|
||||
Same approach as with <span class="bold"><strong>flat</strong></span>
|
||||
functions
|
||||
</li></ol></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
C++14 with disabled <a class="link" href="configuration_macro.html" title="Configuration Macro"><span class="bold"><strong>Loophole</strong></span></a>:
|
||||
<div class="orderedlist"><ol class="orderedlist" type="a">
|
||||
<li class="listitem">
|
||||
at compile-time: use flat representation if it could
|
||||
precisely represent the type. Otherwise:
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: let <code class="computeroutput"><span class="identifier">I</span></code>
|
||||
be is an index of current field, it equals 0
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<p class="simpara">
|
||||
at run-time: <code class="computeroutput"><span class="identifier">T</span></code>
|
||||
is constructed and field <code class="computeroutput"><span class="identifier">I</span></code>
|
||||
is aggregate initialized using a separate instance of
|
||||
structure that is convertible to anything
|
||||
</p>
|
||||
<div class="note"><table border="0" summary="Note">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/note.png"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
Additional care is taken to make sure that all the
|
||||
information about <code class="computeroutput"><span class="identifier">T</span></code>
|
||||
is available to the compiler and that operations on
|
||||
<code class="computeroutput"><span class="identifier">T</span></code> have
|
||||
no side effects, so the compiler can optimize away
|
||||
the unnecessary temporary objects.
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: <code class="computeroutput"><span class="identifier">I</span>
|
||||
<span class="special">+=</span> <span class="number">1</span></code>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: if <code class="computeroutput"><span class="identifier">I</span></code>
|
||||
does not equal fields count goto step <em class="replaceable"><code>c.</code></em>
|
||||
from inside of the conversion operator of the structure
|
||||
that is convertible to anything
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: using knowledge from previous steps
|
||||
create a tuple with exactly the same layout as in user-provided
|
||||
structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: find offsets for each field in user-provided
|
||||
structure using the tuple from previous step
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at run-time: get pointer to each field, knowing the structure
|
||||
address and each field offset
|
||||
</li>
|
||||
</ol></div>
|
||||
</li>
|
||||
</ul></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at run-time: a tuple of references to fields is returned => all
|
||||
the tuple methods are available for the structure
|
||||
</li>
|
||||
</ol></div>
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
Long description of some basics: <a href="https://youtu.be/UlNUNxLtBI0" target="_top">Antony
|
||||
Polukhin: Better C++14 reflections</a>. Long description of some basics
|
||||
of C++14 with disabled <a class="link" href="configuration_macro.html" title="Configuration Macro"><span class="bold"><strong>Loophole</strong></span></a>: <a href="https://youtu.be/abdeAew3gmQ" target="_top">Antony
|
||||
Polukhin: C++14 Reflections Without Macros, Markup nor External Tooling</a>.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="limitations.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
103
boost_pfr/limitations.html
Normal file
103
boost_pfr/limitations.html
Normal file
@@ -0,0 +1,103 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Limitations</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="configuration_macro.html" title="Configuration Macro">
|
||||
<link rel="next" href="how_it_works.html" title="How it works">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="configuration_macro.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.limitations"></a><a class="link" href="limitations.html" title="Limitations">Limitations</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
The reflection has some limitations that depend on a C++ Standard and compiler
|
||||
capabilities:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
Static variables are ignored
|
||||
</li>
|
||||
<li class="listitem">
|
||||
T must be <a href="https://en.cppreference.com/w/cpp/language/aggregate_initialization" target="_top">aggregate
|
||||
initializable</a> without empty base classes
|
||||
</li>
|
||||
<li class="listitem">
|
||||
if T contains C arrays or it is inherited from non-empty type then the
|
||||
result of reflection may differ depending on the C++ version and library
|
||||
configuration
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Additional C++14 <span class="bold"><strong>only</strong></span> limitations (switch
|
||||
to C++17 to remove all of those):
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="circle">
|
||||
<li class="listitem">
|
||||
Non of the member fields should have a template constructor from
|
||||
one parameter.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Additional limitations if the <a class="link" href="configuration_macro.html" title="Configuration Macro"><span class="bold"><strong>Loophole</strong></span></a> is also disabled:
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="square">
|
||||
<li class="listitem">
|
||||
<span class="bold"><strong>Flat</strong></span>:
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
T must be POD and must not contain references nor bitfields
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Enums will be returned as their underlying type
|
||||
</li>
|
||||
</ul></div>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<span class="bold"><strong>Precise</strong></span>:
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
T must be constexpr aggregate initializable and all its
|
||||
fields must be constexpr default constructible
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/get.html" title="Function get">boost::pfr::get</a></code>,
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/structure_to_tuple.html" title="Function template structure_to_tuple">boost::pfr::structure_to_tuple</a></code>,
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/structure_tie.html" title="Function template structure_tie">boost::pfr::structure_tie</a></code>,
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.core_hpp" title="Header <boost/pfr/precise/core.hpp>">boost::pfr::tuple_element</a></code>
|
||||
require T to be a flat POD type
|
||||
</li>
|
||||
</ul></div>
|
||||
</li>
|
||||
</ul></div>
|
||||
</li>
|
||||
</ul></div>
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="configuration_macro.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
398
boost_pfr/reference.html
Normal file
398
boost_pfr/reference.html
Normal file
@@ -0,0 +1,398 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Reference</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
|
||||
<link rel="next" href="../boost/pfr/tuple_element.html" title="Type definition tuple_element">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="acknowledgements.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/pfr/tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="reference.html#precise_reflection">Precise Reflection</a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#flat_reflection">Flat Reflection</a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#include_all">Include all</a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="precise_reflection"></a>Precise Reflection</h3></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise_hpp">Header <boost/pfr/precise.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.core_hpp">Header <boost/pfr/precise/core.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.functions_for_hpp">Header <boost/pfr/precise/functions_for.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.functors_hpp">Header <boost/pfr/precise/functors.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.global_ops_hpp">Header <boost/pfr/precise/global_ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.io_hpp">Header <boost/pfr/precise/io.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.ops_hpp">Header <boost/pfr/precise/ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.precise.tuple_size_hpp">Header <boost/pfr/precise/tuple_size.hpp></a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise.hpp" target="_top">boost/pfr/precise.hpp</a>></h4></div></div></div>
|
||||
<p>Includes all the Boost.PFR headers that do not define <code class="computeroutput">flat_*</code> functions, except <a class="link" href="reference.html#header.boost.pfr.precise.global_ops_hpp" title="Header <boost/pfr/precise/global_ops.hpp>">boost/pfr/precise/global_ops.hpp</a> </p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.core_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/core.hpp" target="_top">boost/pfr/precise/core.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/tuple_element.html" title="Type definition tuple_element"><span class="identifier">tuple_element</span></a><span class="special">;</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="../boost/pfr/tuple_element_t.html" title="Type definition tuple_element_t"><span class="identifier">tuple_element_t</span></a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <a class="link" href="../boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <a class="link" href="../boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="../boost/pfr/structure_to_tuple.html" title="Function template structure_to_tuple"><span class="identifier">structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="../boost/pfr/structure_tie.html" title="Function template structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">></span> <span class="keyword">void</span> <a class="link" href="../boost/pfr/for_each_field.html" title="Function template for_each_field"><span class="identifier">for_each_field</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&&</span><span class="special">,</span> <span class="identifier">F</span> <span class="special">&&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/tie_from_structure.html" title="Function template tie_from_structure"><span class="identifier">tie_from_structure</span></a><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&</span><span class="special">...</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.functions_for_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/functions_for.hpp" target="_top">boost/pfr/precise/functions_for.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis">
|
||||
|
||||
<a class="link" href="../BOOST_PF_idm46672729188000.html" title="Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR">BOOST_PFR_PRECISE_FUNCTIONS_FOR</a>(T)</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.functors_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/functors.hpp" target="_top">boost/pfr/precise/functors.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/equal_to.html" title="Struct template equal_to">equal_to</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/greater.html" title="Struct template greater">greater</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/greater_equal.html" title="Struct template greater_equal">greater_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/hash.html" title="Struct template hash">hash</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/less.html" title="Struct template less">less</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/less_equal.html" title="Struct template less_equal">less_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/not_equal.html" title="Struct template not_equal">not_equal</a><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.global_ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/global_ops.hpp" target="_top">boost/pfr/precise/global_ops.hpp</a>></h4></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for any types that do not have their own operators. If type is comparable or streamable using it's own operator (but not it's conversion operator), then the original operator is used.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">global_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>defines:</strong></span> </p>
|
||||
<pre class="synopsis">
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729115536"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729112160"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729108784"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729105408"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729102032"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672729098656"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> <span class="special">></span>
|
||||
<a name="operator_idm46672729095280"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> <span class="special">></span>
|
||||
<a name="operator_idm46672729091392"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="hash_val_idm46672729087504"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.io_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/io.hpp" target="_top">boost/pfr/precise/io.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="../boost/pfr/write.html" title="Function template write"><span class="identifier">write</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="../boost/pfr/read.html" title="Function template read"><span class="identifier">read</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/ops.hpp" target="_top">boost/pfr/precise/ops.hpp</a>></h4></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for types that do not have their own operators. If type is comparable or streamable using it's own operator or it's conversion operator, then the original operator is used.</p>
|
||||
<p>Just write <span class="bold"><strong>using</strong></span> <span class="bold"><strong>namespace</strong></span> <span class="bold"><strong>ops</strong></span>; and operators will be available in scope.</p>
|
||||
<p><span class="bold"><strong>Requires:</strong></span> C++17 or <a class="link" href="limitations.html" title="Limitations">C++14 constexpr aggregate intializable type</a>.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">ops</span><span class="special">;</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>contains:</strong></span> </p>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">ops</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator=="></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator!="></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729050624"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729047744"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729044864"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729041984"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729039104"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span>
|
||||
<span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.ops.operator_idm46672729035232"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span>
|
||||
<span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="special">></span>
|
||||
<a name="boost.pfr.ops.hash_value"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.precise.tuple_size_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/precise/tuple_size.hpp" target="_top">boost/pfr/precise/tuple_size.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/tuple_size.html" title="Type definition tuple_size"><span class="identifier">tuple_size</span></a><span class="special">;</span>
|
||||
|
||||
<span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="../boost/pfr/tuple_size_v.html" title="Global tuple_size_v">tuple_size_v</a><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="flat_reflection"></a>Flat Reflection</h3></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat_hpp">Header <boost/pfr/flat.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.core_hpp">Header <boost/pfr/flat/core.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.functions_for_hpp">Header <boost/pfr/flat/functions_for.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.functors_hpp">Header <boost/pfr/flat/functors.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.global_ops_hpp">Header <boost/pfr/flat/global_ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.io_hpp">Header <boost/pfr/flat/io.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.ops_hpp">Header <boost/pfr/flat/ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="reference.html#header.boost.pfr.flat.tuple_size_hpp">Header <boost/pfr/flat/tuple_size.hpp></a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat.hpp" target="_top">boost/pfr/flat.hpp</a>></h4></div></div></div>
|
||||
<p>Includes all the Boost.PFR headers that define <code class="computeroutput">flat_*</code> functions, except <a class="link" href="reference.html#header.boost.pfr.flat.global_ops_hpp" title="Header <boost/pfr/flat/global_ops.hpp>">boost/pfr/flat/global_ops.hpp</a> </p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.core_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/core.hpp" target="_top">boost/pfr/flat/core.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/flat_tuple_element.html" title="Type definition flat_tuple_element"><span class="identifier">flat_tuple_element</span></a><span class="special">;</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">flat_tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="../boost/pfr/flat_tuple_element_t.html" title="Type definition flat_tuple_element_t"><span class="identifier">flat_tuple_element_t</span></a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <a class="link" href="../boost/pfr/flat_get.html" title="Function flat_get"><span class="identifier">flat_get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <a class="link" href="../boost/pfr/flat_get.html" title="Function flat_get"><span class="identifier">flat_get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <a class="link" href="../boost/pfr/flat_structure_to_tuple.html" title="Function template flat_structure_to_tuple"><span class="identifier">flat_structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <a class="link" href="../boost/pfr/flat_structure_tie.html" title="Function template flat_structure_tie"><span class="identifier">flat_structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">></span> <span class="keyword">void</span> <a class="link" href="../boost/pfr/flat_for_each_field.html" title="Function template flat_for_each_field"><span class="identifier">flat_for_each_field</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&&</span><span class="special">,</span> <span class="identifier">F</span> <span class="special">&&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/flat_tie_from_structure.html" title="Function template flat_tie_from_structure"><span class="identifier">flat_tie_from_structure</span></a><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&</span><span class="special">...</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.functions_for_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/functions_for.hpp" target="_top">boost/pfr/flat/functions_for.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis">
|
||||
|
||||
<a class="link" href="../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR</a>(T)</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.functors_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/functors.hpp" target="_top">boost/pfr/flat/functors.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_equal_to.html" title="Struct template flat_equal_to">flat_equal_to</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_greater.html" title="Struct template flat_greater">flat_greater</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_greater_equal.html" title="Struct template flat_greater_equal">flat_greater_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_hash.html" title="Struct template flat_hash">flat_hash</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_less.html" title="Struct template flat_less">flat_less</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_less_equal.html" title="Struct template flat_less_equal">flat_less_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/pfr/flat_not_equal.html" title="Struct template flat_not_equal">flat_not_equal</a><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.global_ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/global_ops.hpp" target="_top">boost/pfr/flat/global_ops.hpp</a>></h4></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for any POD types that do not have their own operators. If POD is comparable or streamable using it's own operator (but not it's conversion operator), then the original operator is used.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">global_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>defines:</strong></span> </p>
|
||||
<pre class="synopsis">
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728859104"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728855728"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728852352"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728848976"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728845600"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="operator_idm46672728842224"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> <span class="special">></span>
|
||||
<a name="operator_idm46672728838848"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> <span class="special">></span>
|
||||
<a name="operator_idm46672728834960"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="special">></span>
|
||||
<a name="hash_val_idm46672728831072"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.io_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/io.hpp" target="_top">boost/pfr/flat/io.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="../boost/pfr/flat_write.html" title="Function template flat_write"><span class="identifier">flat_write</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="../boost/pfr/flat_read.html" title="Function template flat_read"><span class="identifier">flat_read</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/ops.hpp" target="_top">boost/pfr/flat/ops.hpp</a>></h4></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for any POD types that do not have their own operators. If POD is comparable or streamable using it's own operator or it's conversion operator, then the original operator is used.</p>
|
||||
<p>Just write <span class="bold"><strong>using</strong></span> <span class="bold"><strong>namespace</strong></span> <span class="bold"><strong>flat_ops</strong></span>; and operators will be available in scope.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">flat_ops</span><span class="special">;</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>Note:</strong></span> If reflecting structures with enums may <code class="computeroutput">reinterpret_cast</code> enum to a reference to underlying type.</p>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>contains:</strong></span> </p>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">flat_ops</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator=="></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator!="></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728793536"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728790656"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728787776"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728784896"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728782016"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span>
|
||||
<span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.pfr.flat_ops.operator_idm46672728778144"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span>
|
||||
<span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special"><</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_trivial</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span> <span class="special">&&</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_standard_layout</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="special">></span>
|
||||
<a name="boost.pfr.flat_ops.hash_value"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr.flat.tuple_size_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr/flat/tuple_size.hpp" target="_top">boost/pfr/flat/tuple_size.hpp</a>></h4></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="../boost/pfr/flat_tuple_size.html" title="Type definition flat_tuple_size"><span class="identifier">flat_tuple_size</span></a><span class="special">;</span>
|
||||
|
||||
<span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="../boost/pfr/flat_tuple_size_v.html" title="Global flat_tuple_size_v">flat_tuple_size_v</a><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="include_all"></a>Include all</h3></div></div></div>
|
||||
<div class="toc"><dl><dt><span class="section"><a href="reference.html#header.boost.pfr_hpp">Header <boost/pfr.hpp></a></span></dt></dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h4 class="title">
|
||||
<a name="header.boost.pfr_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_63_0/boost/pfr.hpp" target="_top">boost/pfr.hpp</a>></h4></div></div></div>
|
||||
<p>Includes all the Boost.PFR headers, except <a class="link" href="reference.html#header.boost.pfr.flat.global_ops_hpp" title="Header <boost/pfr/flat/global_ops.hpp>">boost/pfr/flat/global_ops.hpp</a> and <a class="link" href="reference.html#header.boost.pfr.precise.global_ops_hpp" title="Header <boost/pfr/precise/global_ops.hpp>">boost/pfr/precise/global_ops.hpp</a> </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="acknowledgements.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/pfr/tuple_element.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
428
boost_pfr/short_examples_for_the_impatient.html
Normal file
428
boost_pfr/short_examples_for_the_impatient.html
Normal file
@@ -0,0 +1,428 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Short Examples for the Impatient</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="next" href="tutorial.html" title="Tutorial">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.short_examples_for_the_impatient"></a><a class="link" href="short_examples_for_the_impatient.html" title="Short Examples for the Impatient">Short Examples
|
||||
for the Impatient</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
Examples in the table use the following definition:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">integer</span><span class="special">;</span>
|
||||
<span class="keyword">double</span> <span class="identifier">real</span><span class="special">;</span>
|
||||
|
||||
<span class="keyword">void</span> <span class="keyword">operator</span> <span class="special">+=(</span><span class="keyword">int</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">integer</span> <span class="special">+=</span> <span class="identifier">v</span> <span class="special">*</span> <span class="number">10</span><span class="special">;</span>
|
||||
<span class="identifier">real</span> <span class="special">+=</span> <span class="identifier">v</span> <span class="special">*</span> <span class="number">100</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">bar</span> <span class="special">{</span>
|
||||
<span class="keyword">char</span> <span class="identifier">character</span><span class="special">;</span>
|
||||
<span class="identifier">foo</span> <span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="identifier">bar</span> <span class="identifier">var</span><span class="special">{</span><span class="char">'A'</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">3.141593</span><span class="special">}};</span>
|
||||
</pre>
|
||||
<div class="informaltable">
|
||||
<a name="boost_pfr.short_examples_for_the_impatient.quick_examples"></a><table class="table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Code snippet
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span></code> content or output
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Function description:
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">var</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">foo</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">};</span> <span class="comment">// C++17 or Loophole is required</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span>
|
||||
<span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2.0</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/get.html" title="Function get">get</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">var</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_get.html" title="Function flat_get">flat_get</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">var</span><span class="special">.</span><span class="identifier">f</span><span class="special">)</span> <span class="special">=</span> <span class="number">42.01</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">42.01</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/get.html" title="Function get">get</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">var</span><span class="special">.</span><span class="identifier">f</span><span class="special">)</span> <span class="special">=</span> <span class="number">42.01</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">42.01</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_get.html" title="Function flat_get">flat_get</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// no `std::hash<bar>` or `bar::operator==(const bar&)` defined</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">unordered_set</span><span class="special"><</span>
|
||||
<span class="identifier">bar</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_hash</span><span class="special"><</span><span class="identifier">bar</span><span class="special">>,</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_equal_to</span><span class="special"><>></span> <span class="identifier">my_uset</span><span class="special">;</span>
|
||||
<span class="identifier">my_uset</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">my_uset</span></code> contains
|
||||
<code class="computeroutput"><span class="identifier">var</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_hash.html" title="Struct template flat_hash">flat_hash</a></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_equal_to.html" title="Struct template flat_equal_to">flat_equal_to</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// no `bar::operator<(const bar&)` defined</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span><span class="special"><</span><span class="identifier">bar</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_less</span><span class="special"><>></span> <span class="identifier">my_set</span><span class="special">;</span>
|
||||
<span class="identifier">my_set</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">my_set</span></code> contains
|
||||
<code class="computeroutput"><span class="identifier">var</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_less.html" title="Struct template flat_less">flat_less</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_ops</span><span class="special">;</span> <span class="comment">// Defines comparisons</span>
|
||||
<span class="identifier">assert</span><span class="special">((</span><span class="identifier">var</span> <span class="special"><</span> <span class="identifier">bar</span><span class="special">{</span><span class="char">'Z'</span><span class="special">,</span> <span class="special">{}}</span> <span class="special">&&</span> <span class="identifier">var</span><span class="special">.</span><span class="identifier">f</span> <span class="special">==</span> <span class="identifier">foo</span><span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">3.141593</span><span class="special">}));</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
assert succeeds
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.flat.ops_hpp" title="Header <boost/pfr/flat/ops.hpp>">using namespace flat_ops;</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">test</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">f1</span><span class="special">;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span> <span class="identifier">f2</span><span class="special">;</span> <span class="special">};</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">ops</span><span class="special">;</span> <span class="comment">// Defines comparisons</span>
|
||||
<span class="identifier">assert</span><span class="special">((</span><span class="identifier">test</span><span class="special">{</span><span class="string">"abc"</span><span class="special">,</span> <span class="string">""</span><span class="special">}</span> <span class="special">></span> <span class="identifier">test</span><span class="special">{</span><span class="string">"aaa"</span><span class="special">,</span> <span class="string">"zomg"</span><span class="special">}));</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
assert succeeds
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.ops_hpp" title="Header <boost/pfr/precise/ops.hpp>">using namespace ops;</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// incrementing each field on 1:</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_for_each_field</span><span class="special">(</span><span class="identifier">var</span><span class="special">,</span> <span class="special">[](</span><span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">field</span> <span class="special">+=</span> <span class="number">1</span><span class="special">;</span>
|
||||
<span class="special">});</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">B</span><span class="special">,</span> <span class="special">{</span><span class="number">778</span><span class="special">,</span> <span class="number">4.14159</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_for_each_field.html" title="Function template flat_for_each_field">flat_for_each_field</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// increments first field on 1, calls foo::operator+= for second field</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">var</span><span class="special">,</span> <span class="special">[](</span><span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">field</span> <span class="special">+=</span> <span class="number">1</span><span class="special">;</span>
|
||||
<span class="special">});</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">B</span><span class="special">,</span> <span class="special">{</span><span class="number">787</span><span class="special">,</span> <span class="number">103.142</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/for_each_field.html" title="Function template for_each_field">for_each_field</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_for_each_field</span><span class="special">(</span><span class="identifier">var</span><span class="special">,</span> <span class="special">[](</span><span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">idx</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">idx</span> <span class="special"><<</span> <span class="string">": "</span>
|
||||
<span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_id_runtime</span><span class="special">(</span><span class="identifier">field</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
|
||||
<span class="special">});</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="number">0</span><span class="special">:</span> <span class="keyword">char</span>
|
||||
<span class="number">1</span><span class="special">:</span> <span class="keyword">int</span>
|
||||
<span class="number">2</span><span class="special">:</span> <span class="keyword">double</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_for_each_field.html" title="Function template flat_for_each_field">flat_for_each_field</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">var</span><span class="special">,</span> <span class="special">[](</span><span class="keyword">auto</span><span class="special">&</span> <span class="identifier">field</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">idx</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">idx</span> <span class="special"><<</span> <span class="string">": "</span>
|
||||
<span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">typeindex</span><span class="special">::</span><span class="identifier">type_id_runtime</span><span class="special">(</span><span class="identifier">field</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
|
||||
<span class="special">});</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="number">0</span><span class="special">:</span> <span class="keyword">char</span>
|
||||
<span class="number">1</span><span class="special">:</span> <span class="identifier">quick_examples_ns</span><span class="special">::</span><span class="identifier">foo</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/for_each_field.html" title="Function template for_each_field">for_each_field</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"tuple_size: "</span>
|
||||
<span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_size</span><span class="special"><</span><span class="identifier">bar</span><span class="special">>::</span><span class="identifier">value</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">tuple_size</span><span class="special">:</span>
|
||||
<span class="number">2</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/tuple_size.html" title="Type definition tuple_size">tuple_size</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"flat_tuple_size: "</span>
|
||||
<span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_size</span><span class="special"><</span><span class="identifier">bar</span><span class="special">>::</span><span class="identifier">value</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">flat_tuple_size</span><span class="special">:</span>
|
||||
<span class="number">3</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_tuple_size.html" title="Type definition flat_tuple_size">flat_tuple_size</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// C++17 or Loophole is required</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="identifier">foo</span><span class="special">></span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">structure_to_tuple</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">foo</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">};</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/structure_to_tuple.html" title="Function template structure_to_tuple">structure_to_tuple</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_structure_to_tuple</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="char">'C'</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_structure_to_tuple.html" title="Function template flat_structure_to_tuple">flat_structure_to_tuple</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// C++17 or Loophole is required</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">char</span><span class="special">&,</span> <span class="identifier">foo</span><span class="special">&></span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">structure_tie</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">foo</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">};</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">A</span><span class="special">,</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2.0</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/structure_tie.html" title="Function template structure_tie">structure_tie</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">char</span><span class="special">&,</span> <span class="keyword">int</span><span class="special">&,</span> <span class="keyword">double</span><span class="special">&></span> <span class="identifier">t</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_structure_tie</span><span class="special">(</span><span class="identifier">var</span><span class="special">);</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">t</span><span class="special">)</span> <span class="special">=</span> <span class="char">'C'</span><span class="special">;</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">var</span> <span class="special">==</span>
|
||||
<span class="special">{</span><span class="identifier">C</span><span class="special">,</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">}}</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_structure_tie.html" title="Function template flat_structure_tie">flat_structure_tie</a></code>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
567
boost_pfr/tutorial.html
Normal file
567
boost_pfr/tutorial.html
Normal file
@@ -0,0 +1,567 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Tutorial</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="prev" href="short_examples_for_the_impatient.html" title="Short Examples for the Impatient">
|
||||
<link rel="next" href="configuration_macro.html" title="Configuration Macro">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="short_examples_for_the_impatient.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="configuration_macro.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.accessing_structure_member_by_in">Accessing
|
||||
structure member by index</a></span></dt>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.custom_printing_of_aggregates">Custom
|
||||
printing of aggregates</a></span></dt>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.flattening">Flattening</a></span></dt>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.should_i_use_flat_or_precise_fun">Should
|
||||
I use Flat or Precise functions?</a></span></dt>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators">Three
|
||||
ways of getting operators </a></span></dt>
|
||||
<dt><span class="section"><a href="tutorial.html#boost_pfr.tutorial.reflection_of_unions">Reflection of
|
||||
unions </a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.accessing_structure_member_by_in"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.accessing_structure_member_by_in" title="Accessing structure member by index">Accessing
|
||||
structure member by index</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
The following example shows how to access structure fields by index using
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/get.html" title="Function get">boost::pfr::get</a></code>.
|
||||
</p>
|
||||
<p>
|
||||
Let's define some structure:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span> <span class="comment">// defining structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">some_integer</span><span class="special">;</span>
|
||||
<span class="keyword">char</span> <span class="identifier">c</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
We can access fields of that structure by index:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="identifier">foo</span> <span class="identifier">f</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="char">'!'</span><span class="special">};</span>
|
||||
<span class="keyword">auto</span><span class="special">&</span> <span class="identifier">r1</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// accessing field with index 0, returns reference to `foo::some_integer`</span>
|
||||
<span class="keyword">auto</span><span class="special">&</span> <span class="identifier">r2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// accessing field with index 1, returns reference to `foo::c`</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.custom_printing_of_aggregates"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.custom_printing_of_aggregates" title="Custom printing of aggregates">Custom
|
||||
printing of aggregates</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
The following example shows how to customize printing and write your own
|
||||
testing helper for structures:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">namespace</span> <span class="identifier">my_testing</span> <span class="special">{</span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">print_each</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">out</span> <span class="special"><<</span> <span class="identifier">v</span><span class="special">;</span> <span class="special">}</span>
|
||||
<span class="keyword">void</span> <span class="identifier">print_each</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">uint8_t</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">out</span> <span class="special"><<</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">>(</span><span class="identifier">v</span><span class="special">);</span> <span class="special">}</span>
|
||||
<span class="keyword">void</span> <span class="identifier">print_each</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">int8_t</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">out</span> <span class="special"><<</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">v</span><span class="special">);</span> <span class="special">}</span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">print</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">value</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">sep</span> <span class="special">=</span> <span class="string">""</span><span class="special">;</span>
|
||||
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">for_each_field</span><span class="special">(</span><span class="identifier">value</span><span class="special">,</span> <span class="special">[&](</span><span class="keyword">const</span> <span class="keyword">auto</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exchange</span><span class="special">(</span><span class="identifier">sep</span><span class="special">,</span> <span class="string">", "</span><span class="special">);</span>
|
||||
<span class="identifier">print_each</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
|
||||
<span class="special">});</span>
|
||||
<span class="special">}</span>
|
||||
|
||||
<span class="comment">/// Usage:</span>
|
||||
<span class="comment">/// struct foo {std::uint8_t a, b;};</span>
|
||||
<span class="comment">/// foo get_foo();</span>
|
||||
<span class="comment">/// ...</span>
|
||||
<span class="comment">/// test_eq(foo{42, 22}, get_foo());</span>
|
||||
<span class="comment">///</span>
|
||||
<span class="comment">/// Output:</span>
|
||||
<span class="comment">/// 42, 22 != 42, 24</span>
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">void</span> <span class="identifier">test_eq</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">y</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">ops</span><span class="special">;</span>
|
||||
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="identifier">y</span><span class="special">)</span> <span class="keyword">return</span><span class="special">;</span>
|
||||
|
||||
<span class="identifier">print</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="string">" != "</span><span class="special">;</span>
|
||||
<span class="identifier">print</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span>
|
||||
<span class="special">}</span>
|
||||
|
||||
<span class="special">}</span> <span class="comment">// namespace my_testing</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.flattening"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.flattening" title="Flattening">Flattening</a>
|
||||
</h3></div></div></div>
|
||||
<div class="warning"><table border="0" summary="Warning">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/warning.png"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
All the functions and metafunctions in Boost.PFR that start with <code class="computeroutput"><span class="identifier">flat_</span></code> represent template parameter type
|
||||
as flat structure without static members!
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<p>
|
||||
Take a look at the <code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">my_struct</span></code>:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">my_struct_nested</span> <span class="special">{</span> <span class="keyword">short</span> <span class="identifier">a1</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a2</span><span class="special">;</span> <span class="special">};</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a0</span><span class="special">;</span>
|
||||
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">cvalue</span> <span class="special">=</span> <span class="number">1000</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct_nested</span> <span class="identifier">nested</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a3_a4</span><span class="special">[</span><span class="number">2</span><span class="special">];</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
It will be flattened and represented as:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct_flat</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a0</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a1</span><span class="special">;</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a2</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a3</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a4</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
It means, that:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">my_struct</span><span class="special">{});</span> <span class="comment">// ... will return `my_struct::my_struct_nested::a2` field.</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">3</span><span class="special">>(</span><span class="identifier">my_struct</span><span class="special">{});</span> <span class="comment">// ... will return `my_struct::a3_a4[0]` field.</span>
|
||||
</pre>
|
||||
<p>
|
||||
Exactly the same story with arrays:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="special">{{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">},</span> <span class="special">{</span><span class="number">12</span><span class="special">,</span> <span class="number">13</span><span class="special">}</span> <span class="special">};</span>
|
||||
<span class="keyword">const</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">i</span><span class="special">);</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">r</span> <span class="special">==</span> <span class="number">11</span><span class="special">);</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.should_i_use_flat_or_precise_fun"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.should_i_use_flat_or_precise_fun" title="Should I use Flat or Precise functions?">Should
|
||||
I use Flat or Precise functions?</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
All the functions that have <code class="computeroutput"><span class="identifier">flat_</span></code>
|
||||
prefix and are declared in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="comment">/*</span></code>
|
||||
headers are the <span class="bold"><strong>flat</strong></span> functions, other function
|
||||
are <span class="bold"><strong>precise</strong></span> and are declared in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="comment">/*</span></code>. In previous example you've seen how the
|
||||
the flattening works.
|
||||
</p>
|
||||
<p>
|
||||
Use <span class="bold"><strong>flat</strong></span> functions if you:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
wish types flattened
|
||||
</li>
|
||||
<li class="listitem">
|
||||
or you reflect types with C arrays
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
For all the other cases prefer <span class="bold"><strong>precise</strong></span> functions.
|
||||
</p>
|
||||
<div class="warning"><table border="0" summary="Warning">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/warning.png"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
MSVC currently supports only <span class="bold"><strong>precise</strong></span> functions
|
||||
and only in /std:c++latest or /std:c++17 modes.
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.three_ways_of_getting_operators"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators">Three
|
||||
ways of getting operators </a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
There are three ways to start using Boost.PFR hashing, comparison and streaming
|
||||
for type <code class="computeroutput"><span class="identifier">T</span></code> in your code.
|
||||
Each method has its own drawbacks and suits own cases.
|
||||
</p>
|
||||
<div class="table">
|
||||
<a name="boost_pfr.tutorial.three_ways_of_getting_operators.flat_ops_comp"></a><p class="title"><b>Table 1.1. Different approaches for operators</b></p>
|
||||
<div class="table-contents"><table class="table" summary="Different approaches for operators">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Approach
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Defines operators in global namespace
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Defined operators could be found by ADL
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Works for local types
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Usable locally, without affecting code from other scopes
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Ignores implicit conversion operators
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Respects user defined operators
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.ops_hpp" title="Header <boost/pfr/precise/ops.hpp>">using namespace boost::pfr::ops;</a></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.flat.ops_hpp" title="Header <boost/pfr/flat/ops.hpp>">using namespace boost::pfr::flat_ops;</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR</a></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../BOOST_PF_idm46672729188000.html" title="Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR">BOOST_PFR_PRECISE_FUNCTIONS_FOR</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes if T is in it
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no, but could be limited to translation unit
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes for T
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no (compile time error)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.flat.global_ops_hpp" title="Header <boost/pfr/flat/global_ops.hpp>">boost/pfr/flat/global_ops.hpp</a></code>
|
||||
</p>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.global_ops_hpp" title="Header <boost/pfr/precise/global_ops.hpp>">boost/pfr/precise/global_ops.hpp</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no, but could be limited to translation unit
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes all
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
<br class="table-break"><p>
|
||||
More detailed description follows:
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>1. <code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.ops_hpp" title="Header <boost/pfr/precise/ops.hpp>">using namespace
|
||||
boost::pfr::ops;</a></code> and <code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.flat.ops_hpp" title="Header <boost/pfr/flat/ops.hpp>">using namespace
|
||||
boost::pfr::flat_ops;</a></code> approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This method is good if you're writing generic algorithms and need to use
|
||||
operators from Boost.PFR only if there are no operators defined for the type:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">uniform_comparator_less</span> <span class="special">{</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">ops</span><span class="special">;</span> <span class="comment">// Enables Boost.PFR operators usage in this scope.</span>
|
||||
|
||||
<span class="comment">// If T has operator< or conversion operator then will use it.</span>
|
||||
<span class="comment">// Otherwise will use boost::pfr::flat_less<T>.</span>
|
||||
<span class="keyword">return</span> <span class="identifier">lhs</span> <span class="special"><</span> <span class="identifier">rhs</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
This method's effects are local to the function. It works even for local
|
||||
types, like structures defined in functions. However <span class="bold"><strong>Argument
|
||||
Dependant Lookup</strong></span> does not work with it:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">uniform_comparator_less</span> <span class="special">{</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">flat_ops</span><span class="special">;</span>
|
||||
|
||||
<span class="comment">// Compile time error if T has neither operator< nor</span>
|
||||
<span class="comment">// conversion operator to comparable type.</span>
|
||||
<span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">{}(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
<span class="bold"><strong>2. <code class="computeroutput"><a class="link" href="../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR</a></code>
|
||||
and <code class="computeroutput"><a class="link" href="../BOOST_PF_idm46672729188000.html" title="Macro BOOST_PFR_PRECISE_FUNCTIONS_FOR">BOOST_PFR_PRECISE_FUNCTIONS_FOR</a></code>
|
||||
approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This method is good if you're writing a structure and wish to define operators
|
||||
for that structure.
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">pair_like</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">first</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">second</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="identifier">BOOST_PFR_FLAT_FUNCTIONS_FOR</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">)</span> <span class="comment">// Defines operators</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span> <span class="special"><</span> <span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
|
||||
</pre>
|
||||
<p>
|
||||
Argument Dependant Lookup works well. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
|
||||
will find the operators for <code class="computeroutput"><span class="keyword">struct</span>
|
||||
<span class="identifier">pair_like</span></code>. <code class="computeroutput"><a class="link" href="../BOOST_PF_idm46672728940944.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR(T)</a></code>
|
||||
can not be used for local types. It must be called only once in namespace
|
||||
of <code class="computeroutput"><span class="identifier">T</span></code>. It does not respect
|
||||
conversion operators of <code class="computeroutput"><span class="identifier">T</span></code>,
|
||||
so for example the following code will output different values:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">empty</span> <span class="special">{</span>
|
||||
<span class="keyword">operator</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="string">"empty{}"</span><span class="special">;</span> <span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
<span class="comment">// Uncomment to get different output:</span>
|
||||
<span class="comment">// BOOST_PFR_FLAT_FUNCTIONS_FOR(empty)</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">empty</span><span class="special">{};</span> <span class="comment">// Outputs `empty{}` if BOOST_PFR_FLAT_FUNCTIONS_FOR(empty) is commented out, '{}' otherwise.</span>
|
||||
</pre>
|
||||
<p>
|
||||
<span class="bold"><strong>3. <code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.flat.global_ops_hpp" title="Header <boost/pfr/flat/global_ops.hpp>">boost/pfr/flat/global_ops.hpp</a></code>
|
||||
and <code class="computeroutput"><a class="link" href="reference.html#header.boost.pfr.precise.global_ops_hpp" title="Header <boost/pfr/precise/global_ops.hpp>">boost/pfr/precise/global_ops.hpp</a></code>
|
||||
approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This approach is for those, who wish to have comparisons/streaming/hashing
|
||||
for all their types.
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat</span><span class="special">/</span><span class="identifier">global_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">pair_like</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">first</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">second</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span> <span class="special"><</span> <span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
|
||||
</pre>
|
||||
<p>
|
||||
Argument Dependant Lookup works well, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
|
||||
will find the operators for <code class="computeroutput"><span class="keyword">struct</span>
|
||||
<span class="identifier">pair_like</span></code>. Operators for local
|
||||
types will be also defined. <span class="bold"><strong>All conversion operators
|
||||
of types are not used during comparisons/streaming/hashing.</strong></span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.tutorial.reflection_of_unions"></a><a class="link" href="tutorial.html#boost_pfr.tutorial.reflection_of_unions" title="Reflection of unions">Reflection of
|
||||
unions </a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
You could use <span class="bold"><strong>precise</strong></span> representation if
|
||||
a type contains union. But be sure that operations for union are manually
|
||||
defined:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">precise</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">union</span> <span class="identifier">test_union</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
|
||||
<span class="keyword">float</span> <span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">test_union</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">test_union</span> <span class="identifier">r</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> <span class="comment">// Compile time error without this operator</span>
|
||||
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="identifier">test_union</span> <span class="identifier">u</span><span class="special">;</span> <span class="special">};</span>
|
||||
|
||||
<span class="keyword">bool</span> <span class="identifier">some_function</span><span class="special">(</span><span class="identifier">foo</span> <span class="identifier">f1</span><span class="special">,</span> <span class="identifier">foo</span> <span class="identifier">f2</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">ops</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="identifier">f1</span> <span class="special">==</span> <span class="identifier">f2</span><span class="special">;</span> <span class="comment">// OK</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
<p>
|
||||
<span class="bold"><strong>Flat</strong></span> reflection of types that contain unions
|
||||
is disabled. <span class="bold"><strong>Flat</strong></span> and <span class="bold"><strong>precise</strong></span>
|
||||
reflection of unions is disabled for safety reasons. There's a way to get
|
||||
the first member of a union and use it. Unfortunately there's no way to find
|
||||
out <span class="bold"><strong>active</strong></span> member of a union. Accessing
|
||||
an inactive union member is an Undefined Behavior. Using the first union
|
||||
member could lead to disaster if it is some character pointer. For example
|
||||
ostreaming <code class="computeroutput"><span class="keyword">union</span> <span class="special">{</span><span class="keyword">char</span><span class="special">*</span> <span class="identifier">c</span><span class="special">;</span> <span class="keyword">long</span> <span class="keyword">long</span>
|
||||
<span class="identifier">ll</span><span class="special">;</span> <span class="special">}</span> <span class="identifier">u</span><span class="special">;</span>
|
||||
<span class="identifier">u</span><span class="special">.</span><span class="identifier">ll</span><span class="special">=</span> <span class="number">1</span><span class="special">;</span></code> will crash your program, as the active member
|
||||
is <code class="computeroutput"><span class="identifier">ll</span></code> that holds <code class="computeroutput"><span class="number">1</span></code> but we are trying to output a <code class="computeroutput"><span class="keyword">char</span><span class="special">*</span></code>. This
|
||||
would cause an invalid pointer dereference.
|
||||
</p>
|
||||
<p>
|
||||
Any attempt to reflect unions leads to a compile time error. In many cases
|
||||
a static assert is triggered that outputs the following message:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="identifier">error</span><span class="special">:</span> <span class="keyword">static_assert</span> <span class="identifier">failed</span> <span class="string">"====================> Boost.PFR: For safety reasons it is forbidden
|
||||
to reflect unions. See `Reflection of unions` section in the docs for more info."</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016-2020 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="short_examples_for_the_impatient.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="configuration_macro.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,209 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Boost.PFR Header Reference</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="prev" href="boost_pod_flat_reflection/how_it_works.html" title="How it works">
|
||||
<link rel="next" href="boost/pfr/flat_tuple_element.html" title="Type definition flat_tuple_element">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_pod_flat_reflection/how_it_works.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pfr_header_reference"></a>Boost.PFR Header Reference</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr_hpp">Header <boost/pfr.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.core_hpp">Header <boost/pfr/core.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.core17_hpp">Header <boost/pfr/core17.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp">Header <boost/pfr/fields_count.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp">Header <boost/pfr/flat_functions_for.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.flat_ops_hpp">Header <boost/pfr/flat_ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.functors_hpp">Header <boost/pfr/functors.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.global_flat_ops_hpp">Header <boost/pfr/global_flat_ops.hpp></a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr.hpp" target="_top">boost/pfr.hpp</a>></h3></div></div></div>
|
||||
<p>Includes all the Boost.PFR headers, except <a class="link" href="boost_pfr_header_reference.html#header.boost.pfr.global_flat_ops_hpp" title="Header <boost/pfr/global_flat_ops.hpp>">boost/pfr/global_flat_ops.hpp</a> </p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.core_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/core.hpp" target="_top">boost/pfr/core.hpp</a>></h3></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/flat_tuple_element.html" title="Type definition flat_tuple_element"><span class="identifier">flat_tuple_element</span></a><span class="special">;</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">flat_tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="boost/pfr/flat_tuple_element_t.html" title="Type definition flat_tuple_element_t"><span class="identifier">flat_tuple_element_t</span></a><span class="special">;</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/flat_tuple_size.html" title="Type definition flat_tuple_size"><span class="identifier">flat_tuple_size</span></a><span class="special">;</span>
|
||||
|
||||
<span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="boost/pfr/flat_tuple_size_v.html" title="Global flat_tuple_size_v">flat_tuple_size_v</a><span class="special">;</span> <span class="comment">// <code class="computeroutput">flat_tuple_size_v</code> is a template variable that contains fields count in a <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattened</a> T. </span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <a class="link" href="boost/pfr/flat_get.html" title="Function flat_get"><span class="identifier">flat_get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <a class="link" href="boost/pfr/flat_get.html" title="Function flat_get"><span class="identifier">flat_get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/flat_structure_to_tuple.html" title="Function template flat_structure_to_tuple"><span class="identifier">flat_structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/flat_structure_tie.html" title="Function template flat_structure_tie"><span class="identifier">flat_structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="boost/pfr/flat_write.html" title="Function template flat_write"><span class="identifier">flat_write</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="boost/pfr/flat_read.html" title="Function template flat_read"><span class="identifier">flat_read</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.core17_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/core17.hpp" target="_top">boost/pfr/core17.hpp</a>></h3></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/tuple_element.html" title="Type definition tuple_element"><span class="identifier">tuple_element</span></a><span class="special">;</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tuple_element</span><span class="special"><</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="boost/pfr/tuple_element_t.html" title="Type definition tuple_element_t"><span class="identifier">tuple_element_t</span></a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/structure_to_tuple.html" title="Function template structure_to_tuple"><span class="identifier">structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/structure_tie.html" title="Function template structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="boost/pfr/write.html" title="Function template write"><span class="identifier">write</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="keyword">void</span> <a class="link" href="boost/pfr/read.html" title="Function template read"><span class="identifier">read</span></a><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.fields_count_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/fields_count.hpp" target="_top">boost/pfr/fields_count.hpp</a>></h3></div></div></div>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/tuple_size.html" title="Type definition tuple_size"><span class="identifier">tuple_size</span></a><span class="special">;</span>
|
||||
|
||||
<span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="boost/pfr/tuple_size_v.html" title="Global tuple_size_v">tuple_size_v</a><span class="special">;</span> <span class="comment">// <code class="computeroutput">tuple_size_v</code> is a template variable that contains fields count in a T and works for any T that supports aggregate initialization even if T is not POD. <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">Flattens</a> only multidimensional arrays. </span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.flat_functions_for_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/flat_functions_for.hpp" target="_top">boost/pfr/flat_functions_for.hpp</a>></h3></div></div></div>
|
||||
<pre class="synopsis">
|
||||
|
||||
<a class="link" href="BOOST_PFR_FLAT_FUNCTIONS_FOR.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR</a>(T)</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.flat_ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/flat_ops.hpp" target="_top">boost/pfr/flat_ops.hpp</a>></h3></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for any POD types that do not have their own operators. If POD is comparable or streamable using it's own operator or it's conversion operator, then the original operator is used.</p>
|
||||
<p>Just write <span class="bold"><strong>using</strong></span> <span class="bold"><strong>namespace</strong></span> <span class="bold"><strong>flat_ops</strong></span>; and operators will be available in scope.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">flat_ops</span><span class="special">;</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>contains:</strong></span> </p>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">flat_ops</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916972384"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916969632"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916966880"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916964128"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916961376"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="boost.pfr.flat_ops.operator_idm46104916958624"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span>
|
||||
<a name="boost.pfr.flat_ops.operator_idm46104916955872"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span>
|
||||
<a name="boost.pfr.flat_ops.operator_idm46104916952128"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
|
||||
<span class="comment">// helper function for Boost </span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="boost.pfr.flat_ops.hash_val_idm46104916948384"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.functors_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/functors.hpp" target="_top">boost/pfr/functors.hpp</a>></h3></div></div></div>
|
||||
<p>Contains functors that can work with PODs and are close to the Standard Library ones. Each functor <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">flattens</a> the POD type and iterates over its fields. </p>
|
||||
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
|
||||
<span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_equal_to.html" title="Struct template flat_equal_to">flat_equal_to</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_greater.html" title="Struct template flat_greater">flat_greater</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_greater_equal.html" title="Struct template flat_greater_equal">flat_greater_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_hash.html" title="Struct template flat_hash">flat_hash</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_less.html" title="Struct template flat_less">flat_less</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_less_equal.html" title="Struct template flat_less_equal">flat_less_equal</a><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">></span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/flat_not_equal.html" title="Struct template flat_not_equal">flat_not_equal</a><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">}</span></pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="header.boost.pfr.global_flat_ops_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_61_0/boost/pfr/global_flat_ops.hpp" target="_top">boost/pfr/global_flat_ops.hpp</a>></h3></div></div></div>
|
||||
<p>Contains comparison operators and stream operators for any POD types that do not have their own operators. If POD is comparable or streamable using it's own operator (but not it's conversion operator), then the original operator is used.</p>
|
||||
<p><span class="bold"><strong>Example:</strong></span> </p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">global_flat_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span> <span class="comment">// No operators defined for that structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
|
||||
<span class="special">}</span><span class="special">;</span>
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span> <span class="special"><</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">s1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
|
||||
</pre>
|
||||
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also: <a class="link" href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators" title="Three ways of getting operators">Three ways of getting operators</a></strong></span> for other ways to define operators and more details.</p>
|
||||
<p><span class="bold"><strong>This</strong></span> <span class="bold"><strong>header</strong></span> <span class="bold"><strong>defines:</strong></span> </p>
|
||||
<pre class="synopsis">
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916834832"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916832080"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916829328"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916826576"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916823824"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">bool</span> <a name="operator_idm46104916821072"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span>
|
||||
<a name="operator_idm46104916818320"></a><span class="keyword">operator</span><span class="special"><<</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> out<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Char<span class="special">,</span> <span class="keyword">typename</span> Traits<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span>
|
||||
<a name="operator_idm46104916814576"></a><span class="keyword">operator</span><span class="special">>></span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special"><</span> <span class="identifier">Char</span><span class="special">,</span> <span class="identifier">Traits</span> <span class="special">></span> <span class="special">&</span> in<span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span>
|
||||
|
||||
<span class="comment">// helper function for Boost unordered containers and boost::hash<>. </span>
|
||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="hash_val_idm46104916810832"></a><span class="identifier">hash_value</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&</span> value<span class="special">)</span><span class="special">;</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="boost_pod_flat_reflection/how_it_works.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/flat_tuple_element.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,70 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>How it works</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="prev" href="requirements_and_limitations.html" title="Requirements and Limitations">
|
||||
<link rel="next" href="../boost_pfr_header_reference.html" title="Boost.PFR Header Reference">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="requirements_and_limitations.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost_pfr_header_reference.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pod_flat_reflection.how_it_works"></a><a class="link" href="how_it_works.html" title="How it works">How it works</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
Short description:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
at compile-time: uses aggregate initialization to detect fields count in
|
||||
user-provided structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: makes a structure that is convertible to anything and
|
||||
remeber types it has been converted to during aggregate initialization
|
||||
of user-provided structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at compile-time: creates a tuple with exactly the same layout as in user-provided
|
||||
structure
|
||||
</li>
|
||||
<li class="listitem">
|
||||
at run-time: <code class="computeroutput"><span class="keyword">reinterpret_cast</span></code>s
|
||||
pointer to user-provided structure to the tuple pointer => all the tuple
|
||||
methods are available for the structure
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
Long description: <a href="https://www.youtube.com/watch?v=abdeAew3gmQ" target="_top">Antony
|
||||
Polukhin: C++14 Reflections Without Macros, Markup nor External Tooling. </a>.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="requirements_and_limitations.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost_pfr_header_reference.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,405 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Quick Start</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="prev" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="next" href="requirements_and_limitations.html" title="Requirements and Limitations">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="requirements_and_limitations.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pod_flat_reflection.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="quick_start.html#boost_pod_flat_reflection.quick_start.accessing_pod_member_by_index">Accessing
|
||||
POD member by index</a></span></dt>
|
||||
<dt><span class="section"><a href="quick_start.html#boost_pod_flat_reflection.quick_start.flattening">Flattening</a></span></dt>
|
||||
<dt><span class="section"><a href="quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators">Three
|
||||
ways of getting operators </a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pod_flat_reflection.quick_start.accessing_pod_member_by_index"></a><a class="link" href="quick_start.html#boost_pod_flat_reflection.quick_start.accessing_pod_member_by_index" title="Accessing POD member by index">Accessing
|
||||
POD member by index</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
The following example shows how to access structure fields by index using
|
||||
<code class="computeroutput"><a class="link" href="../boost/pfr/flat_get.html" title="Function flat_get">boost::pfr::flat_get</a></code>.
|
||||
</p>
|
||||
<p>
|
||||
Let's define some structure:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span> <span class="comment">// defining structure</span>
|
||||
<span class="keyword">int</span> <span class="identifier">some_integer</span><span class="special">;</span>
|
||||
<span class="keyword">char</span> <span class="identifier">c</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
We can access fields of that structure by index:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="identifier">foo</span> <span class="identifier">f</span> <span class="special">{</span><span class="number">777</span><span class="special">,</span> <span class="char">'!'</span><span class="special">};</span>
|
||||
<span class="keyword">auto</span><span class="special">&</span> <span class="identifier">r1</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// accessing field with index 0, returns reference to `foo::some_integer`</span>
|
||||
<span class="keyword">auto</span><span class="special">&</span> <span class="identifier">r2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// accessing field with index 1, returns reference to `foo::c`</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pod_flat_reflection.quick_start.flattening"></a><a class="link" href="quick_start.html#boost_pod_flat_reflection.quick_start.flattening" title="Flattening">Flattening</a>
|
||||
</h3></div></div></div>
|
||||
<div class="warning"><table border="0" summary="Warning">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/warning.png"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
All the functions and metafunctions in Boost.PFR that start with <code class="computeroutput"><span class="identifier">flat_</span></code> represent template parameter type
|
||||
as flat structure without static members!
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<p>
|
||||
Take a look at the <code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">my_struct</span></code>:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct_nested</span> <span class="special">{</span> <span class="keyword">short</span> <span class="identifier">a1</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a2</span><span class="special">;</span> <span class="special">};</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a0</span><span class="special">;</span>
|
||||
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">cvalue</span> <span class="special">=</span> <span class="number">1000</span><span class="special">;</span>
|
||||
<span class="identifier">my_struct_nested</span> <span class="identifier">nested</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a3_a4</span><span class="special">[</span><span class="number">2</span><span class="special">];</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
It will be flattened and represented as:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct_flat</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a0</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a1</span><span class="special">;</span>
|
||||
<span class="keyword">int</span> <span class="identifier">a2</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a3</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">a4</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
It means, that:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">my_struct</span><span class="special">{});</span> <span class="comment">// ... will return `my_struct::my_struct_nested::a2` field.</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">3</span><span class="special">>(</span><span class="identifier">my_struct</span><span class="special">{});</span> <span class="comment">// ... will return `my_struct::a3_a4[0]` field.</span>
|
||||
</pre>
|
||||
<p>
|
||||
Exactly the same story with arrays:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="special">{{</span><span class="number">10</span><span class="special">,</span> <span class="number">11</span><span class="special">},</span> <span class="special">{</span><span class="number">12</span><span class="special">,</span> <span class="number">13</span><span class="special">}</span> <span class="special">};</span>
|
||||
<span class="keyword">const</span> <span class="keyword">int</span><span class="special">&</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">i</span><span class="special">);</span>
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">r</span> <span class="special">==</span> <span class="number">11</span><span class="special">);</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators"></a><a class="link" href="quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators" title="Three ways of getting operators">Three
|
||||
ways of getting operators </a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
There are three ways to start using Boost.PFR hashing, comparison and streaming
|
||||
operators for type <code class="computeroutput"><span class="identifier">T</span></code> in your
|
||||
code. Each method has it's own drawbacks and suits own cases.
|
||||
</p>
|
||||
<div class="table">
|
||||
<a name="boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators.flat_ops_comp"></a><p class="title"><b>Table 1.1. Different approaches for operators</b></p>
|
||||
<div class="table-contents"><table class="table" summary="Different approaches for operators">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Approach
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Defines operators in global namespace
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Defined operators could be found by ADL
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Works for local types
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Usable localy, without affecting code from other scopes
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Ignores implicit conversion operators
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
Respects user defined operators
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.flat_ops_hpp" title="Header <boost/pfr/flat_ops.hpp>">boost/pfr/flat_ops.hpp</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp" title="Header <boost/pfr/flat_functions_for.hpp>">boost/pfr/flat_functions_for.hpp</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes if T is in it
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no, but could be limited to translation unit
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes for T
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no (compile time error)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.global_flat_ops_hpp" title="Header <boost/pfr/global_flat_ops.hpp>">boost/pfr/global_flat_ops.hpp</a></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
no, but could be limited to translation unit
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes all
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
yes
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
</div>
|
||||
<br class="table-break"><p>
|
||||
More detailed description:
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>1) <code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.flat_ops_hpp" title="Header <boost/pfr/flat_ops.hpp>">boost/pfr/flat_ops.hpp</a></code>
|
||||
approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This method is good if you're writing generic algorithms and need to use
|
||||
operators from Boost.PFR only if there's no operators defined for the type:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">uniform_comparator_less</span> <span class="special">{</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">flat_ops</span><span class="special">;</span> <span class="comment">// Enables Boost.PFR operators usage in this scope.</span>
|
||||
<span class="keyword">return</span> <span class="identifier">lhs</span> <span class="special"><</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="comment">// If T has operator< or conversion operator then will use it, otherwise will use boost::pfr::flat_less<T>.</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
This method's effects are local to the function. It works even for local
|
||||
types, like structures defined in functions. However <span class="bold"><strong>Argument
|
||||
Dependant Lookup</strong></span> does not work with it:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
|
||||
<span class="keyword">struct</span> <span class="identifier">uniform_comparator_less</span> <span class="special">{</span>
|
||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">{</span>
|
||||
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">flat_ops</span><span class="special">;</span>
|
||||
<span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">{}(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span> <span class="comment">// Compile time error if T has neither operator< nor conversion operator to comparable type.</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
<span class="bold"><strong>2) <code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp" title="Header <boost/pfr/flat_functions_for.hpp>">boost/pfr/flat_functions_for.hpp</a></code>
|
||||
approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This method is good if you're writing POD structure and wish to define operators
|
||||
for that structure.
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">pair_like</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">first</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">second</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="identifier">BOOST_PFR_FLAT_FUNCTIONS_FOR</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">)</span> <span class="comment">// Defines operators</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span> <span class="special"><</span> <span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
|
||||
</pre>
|
||||
<p>
|
||||
Argument Dependant Lookup works well, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
|
||||
will find the operators for <code class="computeroutput"><span class="keyword">struct</span>
|
||||
<span class="identifier">pair_like</span></code>. <code class="computeroutput"><a class="link" href="../BOOST_PFR_FLAT_FUNCTIONS_FOR.html" title="Macro BOOST_PFR_FLAT_FUNCTIONS_FOR">BOOST_PFR_FLAT_FUNCTIONS_FOR(T)</a></code>
|
||||
can not be used for local types, it must be called only once in namespace
|
||||
of <code class="computeroutput"><span class="identifier">T</span></code>. It does not respect
|
||||
conversion operators of <code class="computeroutput"><span class="identifier">T</span></code>,
|
||||
so for example the following code will output different values:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">flat_functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">empty</span> <span class="special">{</span>
|
||||
<span class="keyword">operator</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="string">"empty{}"</span><span class="special">;</span> <span class="special">}</span>
|
||||
<span class="special">};</span>
|
||||
<span class="comment">// Uncomment to get different output:</span>
|
||||
<span class="comment">// BOOST_PFR_FLAT_FUNCTIONS_FOR(empty)</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">empty</span><span class="special">{};</span> <span class="comment">// Outputs `empty{}` if BOOST_PFR_FLAT_FUNCTIONS_FOR(empty) is commented out, '{}' otherwise.</span>
|
||||
</pre>
|
||||
<p>
|
||||
<span class="bold"><strong>3) <code class="computeroutput"><a class="link" href="../boost_pfr_header_reference.html#header.boost.pfr.global_flat_ops_hpp" title="Header <boost/pfr/global_flat_ops.hpp>">boost/pfr/global_flat_ops.hpp</a></code>
|
||||
approach</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
This approach is for those, who wish to have comparisong/streaming/hashing
|
||||
for all their types.
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">global_flat_ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">pair_like</span> <span class="special">{</span>
|
||||
<span class="keyword">int</span> <span class="identifier">first</span><span class="special">;</span>
|
||||
<span class="keyword">short</span> <span class="identifier">second</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span> <span class="special"><</span> <span class="identifier">pair_like</span><span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">});</span>
|
||||
</pre>
|
||||
<p>
|
||||
Argument Dependant Lookup works well, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span></code>
|
||||
will find the operators for <code class="computeroutput"><span class="keyword">struct</span>
|
||||
<span class="identifier">pair_like</span></code>. Operators for local
|
||||
types will be also defined. <span class="bold"><strong>All conversion operators
|
||||
of all POD types won't be used during comparisons/streaming/hashing.</strong></span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="requirements_and_limitations.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,74 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Requirements and Limitations</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="up" href="../index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="prev" href="quick_start.html" title="Quick Start">
|
||||
<link rel="next" href="how_it_works.html" title="How it works">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="quick_start.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pod_flat_reflection.requirements_and_limitations"></a><a class="link" href="requirements_and_limitations.html" title="Requirements and Limitations">Requirements
|
||||
and Limitations</a>
|
||||
</h2></div></div></div>
|
||||
<div class="note"><table border="0" summary="Note">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/note.png"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
Boost.PFR does not depend on any Boost library. You may use it's headers
|
||||
even without Boost.
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
Boost.PFR <span class="bold"><strong>requires C++14 compatible compiler</strong></span>
|
||||
(GCC-5.0+, Clang, ...)
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Static variables are ignored
|
||||
</li>
|
||||
<li class="listitem">
|
||||
T must be aggregate initializable
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
C++14 limitations (C++17 fixes those): * T must be POD and must not contain
|
||||
references nor bitfields * T must not contain pointers to user defined types
|
||||
* Enums will be returned as their underlying type * All the methods that provide
|
||||
access to filds have a <code class="computeroutput"><span class="keyword">reinterpret_cast</span></code>
|
||||
to an unrelated type. All the possible efforts and compiler scpecific tricks
|
||||
were used to avoid issues. But strictly speaking *this is an Undefined Behavior.
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
<td align="right"><div class="copyright-footer">Copyright © 2016 Antony Polukhin<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav">
|
||||
<a accesskey="p" href="quick_start.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="how_it_works.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
379
index.html
379
index.html
@@ -1,30 +1,30 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Chapter 1. Boost.POD Flat Reflection 1.0</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_61_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Chapter 1. Boost.PFR 1.0</title>
|
||||
<link rel="stylesheet" href="http://www.boost.org/doc/libs/1_63_0/doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.POD Flat Reflection 1.0">
|
||||
<link rel="next" href="boost_pod_flat_reflection/quick_start.html" title="Quick Start">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.PFR 1.0">
|
||||
<link rel="next" href="boost_pfr/short_examples_for_the_impatient.html" title="Short Examples for the Impatient">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_61_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="http://www.boost.org/doc/libs/1_63_0/boost.png"></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/index.html">Home</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_61_0/more/index.htm">More</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/doc/libs/1_63_0/more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"><a accesskey="n" href="boost_pod_flat_reflection/quick_start.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a></div>
|
||||
<div class="spirit-nav"><a accesskey="n" href="boost_pfr/short_examples_for_the_impatient.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a></div>
|
||||
<div class="chapter">
|
||||
<div class="titlepage"><div>
|
||||
<div><h2 class="title">
|
||||
<a name="boost_pod_flat_reflection"></a>Chapter 1. Boost.POD Flat Reflection 1.0</h2></div>
|
||||
<div><p class="copyright">Copyright © 2016 Antony Polukhin</p></div>
|
||||
<a name="boost_pfr"></a>Chapter 1. Boost.PFR 1.0</h2></div>
|
||||
<div><p class="copyright">Copyright © 2016-2020 Antony Polukhin</p></div>
|
||||
<div><div class="legalnotice">
|
||||
<a name="boost_pod_flat_reflection.legal"></a><p>
|
||||
<a name="boost_pfr.legal"></a><p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -33,97 +33,306 @@
|
||||
<div class="toc">
|
||||
<p><b>Table of Contents</b></p>
|
||||
<dl>
|
||||
<dt><span class="section"><a href="index.html#boost_pod_flat_reflection.motivation">Motivation</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/quick_start.html">Quick Start</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro">Motivation and Intro</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.accessing_pod_member_by_index">Accessing
|
||||
POD member by index</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.flattening">Flattening</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/quick_start.html#boost_pod_flat_reflection.quick_start.three_ways_of_getting_operators">Three
|
||||
ways of getting operators </a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.why_tuples_are_bad_and_aggregate">Why
|
||||
tuples are bad and aggregates are more preferable?</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.sample_with_db">Sample
|
||||
with DB</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.representations">Representations</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.out_of_the_box_functionality">Out
|
||||
of the box functionality </a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/requirements_and_limitations.html">Requirements
|
||||
and Limitations</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pod_flat_reflection/how_it_works.html">How it works</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html">Boost.PFR Header Reference</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/short_examples_for_the_impatient.html">Short Examples
|
||||
for the Impatient</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html">Tutorial</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr_hpp">Header <boost/pfr.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.core_hpp">Header <boost/pfr/core.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.core17_hpp">Header <boost/pfr/core17.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.fields_count_hpp">Header <boost/pfr/fields_count.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.flat_functions_for_hpp">Header <boost/pfr/flat_functions_for.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.flat_ops_hpp">Header <boost/pfr/flat_ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.functors_hpp">Header <boost/pfr/functors.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr_header_reference.html#header.boost.pfr.global_flat_ops_hpp">Header <boost/pfr/global_flat_ops.hpp></a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.accessing_structure_member_by_in">Accessing
|
||||
structure member by index</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.custom_printing_of_aggregates">Custom
|
||||
printing of aggregates</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.flattening">Flattening</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.should_i_use_flat_or_precise_fun">Should
|
||||
I use Flat or Precise functions?</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators">Three
|
||||
ways of getting operators </a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/tutorial.html#boost_pfr.tutorial.reflection_of_unions">Reflection of
|
||||
unions </a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="boost_pfr/configuration_macro.html">Configuration Macro</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/limitations.html">Limitations</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/how_it_works.html">How it works</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/acknowledgements.html">Acknowledgements</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/reference.html">Reference</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="boost_pfr/reference.html#precise_reflection">Precise Reflection</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/reference.html#flat_reflection">Flat Reflection</a></span></dt>
|
||||
<dt><span class="section"><a href="boost_pfr/reference.html#include_all">Include all</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_pod_flat_reflection.motivation"></a><a class="link" href="index.html#boost_pod_flat_reflection.motivation" title="Motivation">Motivation</a>
|
||||
<a name="boost_pfr.motivation_and_intro"></a><a class="link" href="index.html#boost_pfr.motivation_and_intro" title="Motivation and Intro">Motivation and Intro</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.why_tuples_are_bad_and_aggregate">Why
|
||||
tuples are bad and aggregates are more preferable?</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.sample_with_db">Sample
|
||||
with DB</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.representations">Representations</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_pfr.motivation_and_intro.out_of_the_box_functionality">Out
|
||||
of the box functionality </a></span></dt>
|
||||
</dl></div>
|
||||
<p>
|
||||
In C++ we have:
|
||||
Boost.Precise and Flat tuple Representation (Boost.PFR) is a library for very
|
||||
basic reflection that gives you access to structure elements by index and provides
|
||||
other <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span></code> like methods for user defined types
|
||||
without any macro or boilerplate code.
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
tuples - types that provide access to members by index. Those are useful
|
||||
for generic programming.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
PODs - types with named fields that do not provide access to members by
|
||||
index. Those are just easy to use.
|
||||
</li>
|
||||
</ul></div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.motivation_and_intro.why_tuples_are_bad_and_aggregate"></a><a class="link" href="index.html#boost_pfr.motivation_and_intro.why_tuples_are_bad_and_aggregate" title="Why tuples are bad and aggregates are more preferable?">Why
|
||||
tuples are bad and aggregates are more preferable?</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
This library provides tuple like methods for POD types, making PODs usable
|
||||
in contexts were only tuples were useful.
|
||||
</p>
|
||||
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>
|
||||
are great for generic programming, however they have disadvantages. First
|
||||
of all, code that uses them becomes barely readable. Consider two definitions:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">auth_info_tuple</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span><span class="special">,</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span><span class="special">,</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span><span class="special">,</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">time_t</span>
|
||||
<span class="special">>;</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">auth_info_aggreagte</span> <span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span> <span class="identifier">id</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span> <span class="identifier">session_id</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span> <span class="identifier">source_id</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">time_t</span> <span class="identifier">valid_till</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<p>
|
||||
Definition via structure is much more clear. Same story with usages: <code class="computeroutput"><span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">value</span><span class="special">);</span></code> vs. <code class="computeroutput"><span class="keyword">return</span>
|
||||
<span class="identifier">value</span><span class="special">.</span><span class="identifier">session_id</span><span class="special">;</span></code>.
|
||||
</p>
|
||||
<p>
|
||||
Another advantage of aggregates is a more efficient copy, move construction
|
||||
and assignments.
|
||||
</p>
|
||||
<p>
|
||||
Because of the above issues many guidelines recommend to <span class="bold"><strong>use
|
||||
aggregates instead of tuples</strong></span>. However aggregates fail when it
|
||||
comes to the functional like programming.
|
||||
</p>
|
||||
<p>
|
||||
PFR library <span class="bold"><strong>provides tuple like methods for aggregate
|
||||
initializable structures</strong></span>, making aggregates usable in contexts
|
||||
where only tuples were useful.
|
||||
</p>
|
||||
<div class="note"><table border="0" summary="Note">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/note.png"></td>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/note.png"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top">
|
||||
<p>
|
||||
All you have to do is to add <code class="computeroutput"><span class="preprocessor">#include</span>
|
||||
<span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
|
||||
</p>
|
||||
All you have to do is to add <code class="computeroutput"><span class="preprocessor">#include</span>
|
||||
<span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
|
||||
</p>
|
||||
<p>
|
||||
No macro or other type/member registrations required.
|
||||
</p>
|
||||
No macro or other type/member registrations required.
|
||||
</p>
|
||||
</td></tr>
|
||||
</table></div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.motivation_and_intro.sample_with_db"></a><a class="link" href="index.html#boost_pfr.motivation_and_intro.sample_with_db" title="Sample with DB">Sample
|
||||
with DB</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
Boost.POD Flat Reflection (Boost.PFR) adds following out-of-the-box functionality
|
||||
to PODs:
|
||||
</p>
|
||||
Imagine that you are writing the wrapper library for database. User of your
|
||||
library wish to implement <code class="computeroutput"><span class="identifier">retrieve_friend</span></code>
|
||||
function:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">db</span><span class="special">/</span><span class="identifier">api</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// your library</span>
|
||||
|
||||
<span class="comment">// User code:</span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">user_info</span> <span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span> <span class="identifier">id</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">name</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span> <span class="identifier">github_stars</span><span class="special">;</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">email</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
|
||||
<span class="comment">// ...</span>
|
||||
|
||||
<span class="identifier">user_info</span> <span class="identifier">retrieve_friend</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span> <span class="identifier">name</span><span class="special">);</span>
|
||||
</pre>
|
||||
<p>
|
||||
Depending on the usage of PFR in your DB wrapper users code will look differently:
|
||||
</p>
|
||||
<div class="informaltable">
|
||||
<a name="boost_pfr.motivation_and_intro.sample_with_db.quick_examples"></a><table class="table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead><tr>
|
||||
<th>
|
||||
<p>
|
||||
Without PFR
|
||||
</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>
|
||||
With PFR
|
||||
</p>
|
||||
</th>
|
||||
</tr></thead>
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">user_info</span> <span class="identifier">retrieve_friend</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span> <span class="identifier">name</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">auto</span> <span class="identifier">tuple_info</span> <span class="special">=</span> <span class="identifier">db</span><span class="special">::</span><span class="identifier">one_row_as</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">int64_t</span><span class="special">>(</span>
|
||||
<span class="string">"SELECT id, name, github_stars, email FROM user_infos WHERE name=$0"</span><span class="special">,</span>
|
||||
<span class="identifier">name</span>
|
||||
<span class="special">);</span>
|
||||
|
||||
<span class="keyword">auto</span> <span class="identifier">friend_info</span> <span class="special">=</span> <span class="identifier">ask_user_for_friend</span><span class="special">(</span>
|
||||
<span class="identifier">user_info</span><span class="special">{</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">tuple_info</span><span class="special">)),</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">tuple_info</span><span class="special">)),</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">tuple_info</span><span class="special">)),</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">3</span><span class="special">>(</span><span class="identifier">tuple_info</span><span class="special">)),</span>
|
||||
<span class="special">}</span>
|
||||
<span class="special">);</span>
|
||||
|
||||
<span class="identifier">db</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span>
|
||||
<span class="string">"INSERT INTO user_infos(id, name, github_stars, email) VALUES ($0, $1, $2, $3)"</span><span class="special">,</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">friend_info</span><span class="special">)),</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">friend_info</span><span class="special">)),</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">friend_info</span><span class="special">)).</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="number">3</span><span class="special">>(</span><span class="identifier">friend_info</span><span class="special">))</span>
|
||||
<span class="special">);</span>
|
||||
|
||||
<span class="keyword">return</span> <span class="identifier">friend_info</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">user_info</span> <span class="identifier">retrieve_friend</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string_view</span> <span class="identifier">name</span><span class="special">)</span> <span class="special">{</span>
|
||||
<span class="keyword">const</span> <span class="keyword">auto</span> <span class="identifier">info</span> <span class="special">=</span> <span class="identifier">db</span><span class="special">::</span><span class="identifier">one_row_as</span><span class="special"><</span><span class="identifier">user_info</span><span class="special">>(</span>
|
||||
<span class="string">"SELECT id, name, github_stars, email FROM user_infos WHERE name=$0"</span><span class="special">,</span>
|
||||
<span class="identifier">name</span>
|
||||
<span class="special">);</span>
|
||||
|
||||
<span class="keyword">auto</span> <span class="identifier">friend_info</span> <span class="special">=</span> <span class="identifier">ask_user_for_friend</span><span class="special">(</span><span class="identifier">info</span><span class="special">);</span>
|
||||
|
||||
<span class="identifier">db</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span>
|
||||
<span class="string">"INSERT INTO user_infos(id, name, github_stars, email) VALUES ($0, $1, $2, $3)"</span><span class="special">,</span>
|
||||
<span class="identifier">friend_info</span>
|
||||
<span class="special">);</span>
|
||||
|
||||
<span class="keyword">return</span> <span class="identifier">friend_info</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
</pre>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p>
|
||||
With PFR the code is shorter, more readable and more pleasant to write.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.motivation_and_intro.representations"></a><a class="link" href="index.html#boost_pfr.motivation_and_intro.representations" title="Representations">Representations</a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
The two different types of reflection are:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
comparison operators
|
||||
</li>
|
||||
<span class="bold"><strong>Precise</strong></span> tuple representation, where
|
||||
each field type is represented as it actually exists, even if the type
|
||||
is itself a user-defined type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
heterogeneous comparators
|
||||
</li>
|
||||
<li class="listitem">
|
||||
hash
|
||||
</li>
|
||||
<li class="listitem">
|
||||
stream operators
|
||||
</li>
|
||||
<li class="listitem">
|
||||
access to members by index
|
||||
</li>
|
||||
<li class="listitem">
|
||||
member reflections
|
||||
</li>
|
||||
<li class="listitem">
|
||||
methods for cooperation with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span></code>
|
||||
</li>
|
||||
<span class="bold"><strong>Flat</strong></span> tuple representation, where user-defined
|
||||
types are represented by their individual field types, and all other
|
||||
types are represented as they actually exists.
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
As an example:
|
||||
</p>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
|
||||
<span class="keyword">struct</span> <span class="identifier">nested_t</span> <span class="special">{</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">;</span> <span class="special">};</span>
|
||||
<span class="keyword">struct</span> <span class="identifier">foo_t</span> <span class="special">{</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="identifier">nested_t</span> <span class="identifier">nested</span><span class="special">;</span> <span class="special">};</span>
|
||||
|
||||
|
||||
<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">flat_tuple_element_t</span><span class="special"><</span><span class="number">1</span><span class="special">,</span> <span class="identifier">foo_t</span><span class="special">>,</span> <span class="comment">// Flat reflection.</span>
|
||||
<span class="keyword">char</span> <span class="comment">// `char`, not `nested_t`!</span>
|
||||
<span class="special">>::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
|
||||
|
||||
|
||||
<span class="comment">// Requires C++17 or Loophole enabled:</span>
|
||||
<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span>
|
||||
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">tuple_element_t</span><span class="special"><</span><span class="number">1</span><span class="special">,</span> <span class="identifier">foo_t</span><span class="special">>,</span> <span class="comment">// Precise reflection.</span>
|
||||
<span class="identifier">nested_t</span>
|
||||
<span class="special">>::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_pfr.motivation_and_intro.out_of_the_box_functionality"></a><a class="link" href="index.html#boost_pfr.motivation_and_intro.out_of_the_box_functionality" title="Out of the box functionality">Out
|
||||
of the box functionality </a>
|
||||
</h3></div></div></div>
|
||||
<p>
|
||||
Boost.Precise and Flat tuple Representation (Boost.PFR) adds the following
|
||||
out-of-the-box functionality for aggregate initializable structures:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
|
||||
<li class="listitem">
|
||||
comparison operators
|
||||
</li>
|
||||
<li class="listitem">
|
||||
heterogeneous comparators
|
||||
</li>
|
||||
<li class="listitem">
|
||||
hash
|
||||
</li>
|
||||
<li class="listitem">
|
||||
stream operators
|
||||
</li>
|
||||
<li class="listitem">
|
||||
access to members by index
|
||||
</li>
|
||||
<li class="listitem">
|
||||
member type retrieval
|
||||
</li>
|
||||
<li class="listitem">
|
||||
methods for cooperation with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span></code>
|
||||
</li>
|
||||
<li class="listitem">
|
||||
methods to visit each field of the structure
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
PFR is a header only library that does not depend on Boost. You can just
|
||||
copy the content of the "include" folder <a href="https://github.com/apolukhin/magic_get" target="_top">from
|
||||
the github</a> into your project, and the library will work fine.
|
||||
</p>
|
||||
</div>
|
||||
<div class="warning"><table border="0" summary="Warning">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/warning.png"></td>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/warning.png"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
@@ -135,20 +344,30 @@
|
||||
</table></div>
|
||||
<div class="caution"><table border="0" summary="Caution">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/caution.png"></td>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/caution.png"></td>
|
||||
<th align="left">Caution</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
This is a C++14 library! Pre C++14 compilers (C++11, C++03...) are not supported
|
||||
Recommended C++ Standards are C++17 and above
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
<div class="caution"><table border="0" summary="Caution">
|
||||
<tr>
|
||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/caution.png"></td>
|
||||
<th align="left">Caution</th>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top"><p>
|
||||
Library requires at least C++14! Pre C++14 compilers (C++11, C++03...) are
|
||||
not supported
|
||||
</p></td></tr>
|
||||
</table></div>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: October 14, 2016 at 05:59:41 GMT</small></p></td>
|
||||
<td align="left"><p><small>Last revised: October 05, 2020 at 16:56:42 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"><a accesskey="n" href="boost_pod_flat_reflection/quick_start.html"><img src="http://www.boost.org/doc/libs/1_61_0/doc/src/images/next.png" alt="Next"></a></div>
|
||||
<div class="spirit-nav"><a accesskey="n" href="boost_pfr/short_examples_for_the_impatient.html"><img src="http://www.boost.org/doc/libs/1_63_0/doc/src/images/next.png" alt="Next"></a></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,27 +1,38 @@
|
||||
index.html
|
||||
boost_pod_flat_reflection/quick_start.html
|
||||
boost_pod_flat_reflection/requirements_and_limitations.html
|
||||
boost_pod_flat_reflection/how_it_works.html
|
||||
boost_pfr_header_reference.html
|
||||
boost/pfr/flat_tuple_element.html
|
||||
boost/pfr/flat_tuple_element_t.html
|
||||
boost/pfr/flat_tuple_size.html
|
||||
boost/pfr/flat_tuple_size_v.html
|
||||
boost/pfr/flat_get.html
|
||||
boost/pfr/flat_structure_to_tuple.html
|
||||
boost/pfr/flat_structure_tie.html
|
||||
boost/pfr/flat_write.html
|
||||
boost/pfr/flat_read.html
|
||||
boost_pfr/short_examples_for_the_impatient.html
|
||||
boost_pfr/tutorial.html
|
||||
boost_pfr/configuration_macro.html
|
||||
boost_pfr/limitations.html
|
||||
boost_pfr/how_it_works.html
|
||||
boost_pfr/acknowledgements.html
|
||||
boost_pfr/reference.html
|
||||
boost/pfr/tuple_element.html
|
||||
boost/pfr/tuple_element_t.html
|
||||
boost/pfr/get.html
|
||||
boost/pfr/structure_to_tuple.html
|
||||
boost/pfr/structure_tie.html
|
||||
boost/pfr/for_each_field.html
|
||||
boost/pfr/tie_from_structure.html
|
||||
BOOST_PF_idm46672729188000.html
|
||||
boost/pfr/equal_to.html
|
||||
boost/pfr/greater.html
|
||||
boost/pfr/greater_equal.html
|
||||
boost/pfr/hash.html
|
||||
boost/pfr/less.html
|
||||
boost/pfr/less_equal.html
|
||||
boost/pfr/not_equal.html
|
||||
boost/pfr/write.html
|
||||
boost/pfr/read.html
|
||||
boost/pfr/tuple_size.html
|
||||
boost/pfr/tuple_size_v.html
|
||||
BOOST_PFR_FLAT_FUNCTIONS_FOR.html
|
||||
boost/pfr/flat_tuple_element.html
|
||||
boost/pfr/flat_tuple_element_t.html
|
||||
boost/pfr/flat_get.html
|
||||
boost/pfr/flat_structure_to_tuple.html
|
||||
boost/pfr/flat_structure_tie.html
|
||||
boost/pfr/flat_for_each_field.html
|
||||
boost/pfr/flat_tie_from_structure.html
|
||||
BOOST_PF_idm46672728940944.html
|
||||
boost/pfr/flat_equal_to.html
|
||||
boost/pfr/flat_greater.html
|
||||
boost/pfr/flat_greater_equal.html
|
||||
@@ -29,3 +40,7 @@ boost/pfr/flat_hash.html
|
||||
boost/pfr/flat_less.html
|
||||
boost/pfr/flat_less_equal.html
|
||||
boost/pfr/flat_not_equal.html
|
||||
boost/pfr/flat_write.html
|
||||
boost/pfr/flat_read.html
|
||||
boost/pfr/flat_tuple_size.html
|
||||
boost/pfr/flat_tuple_size_v.html
|
||||
Reference in New Issue
Block a user