forked from boostorg/mp11
Update documentation
This commit is contained in:
@@ -2176,15 +2176,14 @@
|
|||||||
</pre>
|
</pre>
|
||||||
<p>
|
<p>
|
||||||
<code class="computeroutput"><span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">T</span><span class="special">...></span></code>
|
<code class="computeroutput"><span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">T</span><span class="special">...></span></code>
|
||||||
is an alias for <code class="computeroutput"><span class="identifier">mp_false</span></code>
|
applies <code class="computeroutput"><span class="identifier">mp_to_bool</span></code> to the
|
||||||
if there exists a type <code class="computeroutput"><span class="identifier">U</span></code>
|
types in <code class="computeroutput"><span class="identifier">T</span><span class="special">...</span></code>,
|
||||||
in <code class="computeroutput"><span class="identifier">T</span><span class="special">...</span></code>
|
in order. If the result of an application is <code class="computeroutput"><span class="identifier">mp_false</span></code>,
|
||||||
for which <code class="computeroutput"><span class="identifier">mp_to_bool</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code>
|
<code class="computeroutput"><span class="identifier">mp_and</span></code> returns <code class="computeroutput"><span class="identifier">mp_false</span></code>. If the application causes a
|
||||||
is not <code class="computeroutput"><span class="identifier">mp_true</span></code>. <code class="computeroutput"><span class="identifier">mp_to_bool</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code>
|
substitution failure, returns <code class="computeroutput"><span class="identifier">mp_false</span></code>.
|
||||||
is not evaluated for types after <code class="computeroutput"><span class="identifier">U</span></code>.
|
If all results are <code class="computeroutput"><span class="identifier">mp_true</span></code>,
|
||||||
If no such type exists, <code class="computeroutput"><span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">T</span><span class="special">...></span></code> is an alias for <code class="computeroutput"><span class="identifier">mp_true</span></code>.
|
returns <code class="computeroutput"><span class="identifier">mp_true</span></code>. <code class="computeroutput"><span class="identifier">mp_and</span><span class="special"><></span></code>
|
||||||
(<code class="computeroutput"><span class="identifier">mp_and</span><span class="special"><></span></code>
|
is <code class="computeroutput"><span class="identifier">mp_true</span></code>.
|
||||||
is <code class="computeroutput"><span class="identifier">mp_true</span></code>.)
|
|
||||||
</p>
|
</p>
|
||||||
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">R1</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_true</span><span class="special">,</span> <span class="identifier">mp_true</span><span class="special">>;</span> <span class="comment">// mp_true</span>
|
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">R1</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_true</span><span class="special">,</span> <span class="identifier">mp_true</span><span class="special">>;</span> <span class="comment">// mp_true</span>
|
||||||
<span class="keyword">using</span> <span class="identifier">R2</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_false</span><span class="special">,</span> <span class="keyword">void</span><span class="special">>;</span> <span class="comment">// mp_false, void is not reached</span>
|
<span class="keyword">using</span> <span class="identifier">R2</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_false</span><span class="special">,</span> <span class="keyword">void</span><span class="special">>;</span> <span class="comment">// mp_false, void is not reached</span>
|
||||||
@@ -2209,7 +2208,7 @@
|
|||||||
is an error because <code class="computeroutput"><span class="keyword">void</span></code> does
|
is an error because <code class="computeroutput"><span class="keyword">void</span></code> does
|
||||||
not have a nested <code class="computeroutput"><span class="identifier">value</span></code>.
|
not have a nested <code class="computeroutput"><span class="identifier">value</span></code>.
|
||||||
The upside is that <code class="computeroutput"><span class="identifier">mp_all</span></code>
|
The upside is that <code class="computeroutput"><span class="identifier">mp_all</span></code>
|
||||||
is faster on legacy compilers.
|
is potentially faster and does not mask substitution failures as <code class="computeroutput"><span class="identifier">mp_and</span></code> does.
|
||||||
</p>
|
</p>
|
||||||
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">R1</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_true</span><span class="special">,</span> <span class="identifier">mp_true</span><span class="special">>;</span> <span class="comment">// mp_true</span>
|
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">R1</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_true</span><span class="special">,</span> <span class="identifier">mp_true</span><span class="special">>;</span> <span class="comment">// mp_true</span>
|
||||||
<span class="keyword">using</span> <span class="identifier">R2</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_false</span><span class="special">,</span> <span class="keyword">void</span><span class="special">>;</span> <span class="comment">// compile-time error</span>
|
<span class="keyword">using</span> <span class="identifier">R2</span> <span class="special">=</span> <span class="identifier">mp_and</span><span class="special"><</span><span class="identifier">mp_false</span><span class="special">,</span> <span class="keyword">void</span><span class="special">>;</span> <span class="comment">// compile-time error</span>
|
||||||
@@ -2493,7 +2492,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||||
<td align="left"><p><small>Last revised: May 23, 2017 at 22:51:13 GMT</small></p></td>
|
<td align="left"><p><small>Last revised: May 24, 2017 at 02:43:53 GMT</small></p></td>
|
||||||
<td align="right"><div class="copyright-footer"></div></td>
|
<td align="right"><div class="copyright-footer"></div></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<hr>
|
<hr>
|
||||||
|
@@ -17,9 +17,9 @@ Same as `std::void_t` from C++17.
|
|||||||
[section `mp_and<T...>`]
|
[section `mp_and<T...>`]
|
||||||
template<class... T> using mp_and = /*...*/;
|
template<class... T> using mp_and = /*...*/;
|
||||||
|
|
||||||
`mp_and<T...>` is an alias for `mp_false` if there exists a type `U` in `T...` for which `mp_to_bool<U>` is not `mp_true`.
|
`mp_and<T...>` applies `mp_to_bool` to the types in `T...`, in order. If the result of an application is `mp_false`, `mp_and`
|
||||||
`mp_to_bool<U>` is not evaluated for types after `U`. If no such type exists, `mp_and<T...>` is an alias for `mp_true`.
|
returns `mp_false`. If the application causes a substitution failure, returns `mp_false`. If all results are `mp_true`,
|
||||||
(`mp_and<>` is `mp_true`.)
|
returns `mp_true`. `mp_and<>` is `mp_true`.
|
||||||
|
|
||||||
using R1 = mp_and<mp_true, mp_true>; // mp_true
|
using R1 = mp_and<mp_true, mp_true>; // mp_true
|
||||||
using R2 = mp_and<mp_false, void>; // mp_false, void is not reached
|
using R2 = mp_and<mp_false, void>; // mp_false, void is not reached
|
||||||
@@ -32,7 +32,8 @@ Same as `std::void_t` from C++17.
|
|||||||
|
|
||||||
`mp_all<T...>` is `mp_true` if `mp_to_bool<U>` is `mp_true` for all types `U` in `T...`, `mp_false` otherwise. Same as
|
`mp_all<T...>` is `mp_true` if `mp_to_bool<U>` is `mp_true` for all types `U` in `T...`, `mp_false` otherwise. Same as
|
||||||
`mp_and`, but does not perform short-circuit evaluation. `mp_and<mp_false, void>` is `mp_false`, but `mp_all<mp_false, void>`
|
`mp_and`, but does not perform short-circuit evaluation. `mp_and<mp_false, void>` is `mp_false`, but `mp_all<mp_false, void>`
|
||||||
is an error because `void` does not have a nested `value`. The upside is that `mp_all` is faster on legacy compilers.
|
is an error because `void` does not have a nested `value`. The upside is that `mp_all` is potentially faster and does not
|
||||||
|
mask substitution failures as `mp_and` does.
|
||||||
|
|
||||||
using R1 = mp_and<mp_true, mp_true>; // mp_true
|
using R1 = mp_and<mp_true, mp_true>; // mp_true
|
||||||
using R2 = mp_and<mp_false, void>; // compile-time error
|
using R2 = mp_and<mp_false, void>; // compile-time error
|
||||||
|
Reference in New Issue
Block a user