mirror of
https://github.com/boostorg/type_traits.git
synced 2025-07-29 20:17:21 +02:00
Document improved unary operators.
[CI SKIP]
This commit is contained in:
@ -105,5 +105,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_complement..~]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -106,5 +106,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_post_decrement..--]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -106,5 +106,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_post_increment..++]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[/
|
||||
#[/
|
||||
(C) Copyright 2009-2011 Frederic Bron.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -106,5 +106,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_pre_decrement..--]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -106,5 +106,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_pre_increment..++]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -104,5 +104,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_unary_minus..-]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -104,5 +104,7 @@ int main() {
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
[prefix_operator_known_issues has_unary_plus..+]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -168,6 +168,7 @@
|
||||
<dt><span class="section"><a href="reference/type_identity.html">type_identity</a></span></dt>
|
||||
<dt><span class="section"><a href="reference/type_with_alignment.html">type_with_alignment</a></span></dt>
|
||||
</dl></div>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"></ol></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -176,6 +176,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_complement.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_complement
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>~
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>~
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_complement<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_complement</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>~ or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_complement is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_complement is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -182,6 +182,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_post_decrement.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_post_decrement
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>--
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>--
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_post_decrement<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_post_decrement</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>-- or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_post_decrement is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_post_decrement is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -182,6 +182,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_post_increment.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_post_increment
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>++
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>++
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_post_increment<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_post_increment</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>++ or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_post_increment is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_post_increment is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -182,6 +182,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_pre_decrement.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_pre_decrement
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>--
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>--
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_pre_decrement<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_pre_decrement</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>-- or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_pre_decrement is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_pre_decrement is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -182,6 +182,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_pre_increment.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_pre_increment
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>++
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>++
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_pre_increment<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_pre_increment</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>++ or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_pre_increment is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_pre_increment is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -172,6 +172,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_unary_minus.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_unary_minus
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>-
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>-
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_unary_minus<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_unary_minus</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>- or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_unary_minus is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_unary_minus is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -172,6 +172,44 @@
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
<span class="bold"><strong>Known issues:</strong></span>
|
||||
</p>
|
||||
<p>
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and
|
||||
decltype/declval) this trait offers near perfect detection. In this situation
|
||||
the macro <code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
will be defined after including <code class="literal"><boost/type_traits/has_unary_plus.hpp></code>.
|
||||
Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then has_unary_plus
|
||||
cannot perform introspection of the template function body to ensure that
|
||||
the type meets all of the conceptual requirements of the actual code.
|
||||
</p>
|
||||
<p>
|
||||
For older compilers (<code class="computeroutput"><span class="identifier">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></code>
|
||||
not defined) then there are a number of issues:
|
||||
</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem">
|
||||
This trait cannot detect whether unary <code class="computeroutput"><span class="keyword">operator</span></code>+
|
||||
is public or not: if <code class="computeroutput"><span class="keyword">operator</span></code>+
|
||||
is defined as a private class member of type T then instantiating <code class="literal">has_unary_plus<T></code>
|
||||
will produce a compiler error. For this reason <code class="literal">has_unary_plus</code>
|
||||
cannot be used to determine whether a type has a public <code class="computeroutput"><span class="keyword">operator</span></code>+ or not.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
<code class="computeroutput"><span class="keyword">volatile</span></code> qualifier is not
|
||||
properly handled and would lead to undefined behavior
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Capturless lambdas are not supported and will lead to a compiler error
|
||||
if has_unary_plus is instantiated on the lambda type.
|
||||
</li>
|
||||
<li class="listitem">
|
||||
Scoped enum types are not supported and will lead to a compiler error
|
||||
if has_unary_plus is instantiated on such a type.
|
||||
</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"></td>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1109128"></a>Class Index</h2></div></div></div>
|
||||
<a name="id1116349"></a>Class Index</h2></div></div></div>
|
||||
<p><a class="link" href="s11.html#idx_id_0">A</a> <a class="link" href="s11.html#idx_id_2">C</a> <a class="link" href="s11.html#idx_id_3">D</a> <a class="link" href="s11.html#idx_id_4">E</a> <a class="link" href="s11.html#idx_id_5">F</a> <a class="link" href="s11.html#idx_id_6">H</a> <a class="link" href="s11.html#idx_id_7">I</a> <a class="link" href="s11.html#idx_id_8">M</a> <a class="link" href="s11.html#idx_id_9">N</a> <a class="link" href="s11.html#idx_id_10">O</a> <a class="link" href="s11.html#idx_id_11">P</a> <a class="link" href="s11.html#idx_id_12">R</a> <a class="link" href="s11.html#idx_id_13">T</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1114394"></a>Typedef Index</h2></div></div></div>
|
||||
<a name="id1120481"></a>Typedef Index</h2></div></div></div>
|
||||
<p><a class="link" href="s12.html#idx_id_21">F</a> <a class="link" href="s12.html#idx_id_28">R</a> <a class="link" href="s12.html#idx_id_29">T</a> <a class="link" href="s12.html#idx_id_31">V</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1114598"></a>Macro Index</h2></div></div></div>
|
||||
<a name="id1120716"></a>Macro Index</h2></div></div></div>
|
||||
<p><a class="link" href="s13.html#idx_id_33">B</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
@ -172,6 +172,7 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_or_assign.html" title="has_bit_or_assign"><span class="index-entry-level-1">has_bit_or_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_xor.html" title="has_bit_xor"><span class="index-entry-level-1">has_bit_xor</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_xor_assign.html" title="has_bit_xor_assign"><span class="index-entry-level-1">has_bit_xor_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">has_complement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_divides.html" title="has_divides"><span class="index-entry-level-1">has_divides</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_divides_assign.html" title="has_divides_assign"><span class="index-entry-level-1">has_divides_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_equal_to.html" title="has_equal_to"><span class="index-entry-level-1">has_equal_to</span></a></p></li>
|
||||
@ -192,8 +193,14 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_not_equal_to.html" title="has_not_equal_to"><span class="index-entry-level-1">has_not_equal_to</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_plus.html" title="has_plus"><span class="index-entry-level-1">has_plus</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_plus_assign.html" title="has_plus_assign"><span class="index-entry-level-1">has_plus_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">has_post_decrement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">has_post_increment</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">has_pre_decrement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">has_pre_increment</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_right_shift.html" title="has_right_shift"><span class="index-entry-level-1">has_right_shift</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_right_shift_assign.html" title="has_right_shift_assign"><span class="index-entry-level-1">has_right_shift_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_minus.html" title="has_unary_minus"><span class="index-entry-level-1">has_unary_minus</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">has_unary_plus</span></a></p></li>
|
||||
</ul></div>
|
||||
</li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
|
@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1115521"></a>Index</h2></div></div></div>
|
||||
<a name="id1121698"></a>Index</h2></div></div></div>
|
||||
<p><a class="link" href="s14.html#idx_id_48">A</a> <a class="link" href="s14.html#idx_id_49">B</a> <a class="link" href="s14.html#idx_id_50">C</a> <a class="link" href="s14.html#idx_id_51">D</a> <a class="link" href="s14.html#idx_id_52">E</a> <a class="link" href="s14.html#idx_id_53">F</a> <a class="link" href="s14.html#idx_id_54">H</a> <a class="link" href="s14.html#idx_id_55">I</a> <a class="link" href="s14.html#idx_id_56">M</a> <a class="link" href="s14.html#idx_id_57">N</a> <a class="link" href="s14.html#idx_id_58">O</a> <a class="link" href="s14.html#idx_id_59">P</a> <a class="link" href="s14.html#idx_id_60">R</a> <a class="link" href="s14.html#idx_id_61">T</a> <a class="link" href="s14.html#idx_id_62">U</a> <a class="link" href="s14.html#idx_id_63">V</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
@ -203,6 +203,7 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_or_assign.html" title="has_bit_or_assign"><span class="index-entry-level-1">has_bit_or_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_xor.html" title="has_bit_xor"><span class="index-entry-level-1">has_bit_xor</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_bit_xor_assign.html" title="has_bit_xor_assign"><span class="index-entry-level-1">has_bit_xor_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">has_complement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_divides.html" title="has_divides"><span class="index-entry-level-1">has_divides</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_divides_assign.html" title="has_divides_assign"><span class="index-entry-level-1">has_divides_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_equal_to.html" title="has_equal_to"><span class="index-entry-level-1">has_equal_to</span></a></p></li>
|
||||
@ -223,8 +224,14 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_not_equal_to.html" title="has_not_equal_to"><span class="index-entry-level-1">has_not_equal_to</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_plus.html" title="has_plus"><span class="index-entry-level-1">has_plus</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_plus_assign.html" title="has_plus_assign"><span class="index-entry-level-1">has_plus_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">has_post_decrement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">has_post_increment</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">has_pre_decrement</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">has_pre_increment</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_right_shift.html" title="has_right_shift"><span class="index-entry-level-1">has_right_shift</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_right_shift_assign.html" title="has_right_shift_assign"><span class="index-entry-level-1">has_right_shift_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_minus.html" title="has_unary_minus"><span class="index-entry-level-1">has_unary_minus</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">has_unary_plus</span></a></p></li>
|
||||
</ul></div>
|
||||
</li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
@ -389,6 +396,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_complement</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">has_complement</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_complement.html" title="has_complement"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
@ -619,6 +627,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_post_decrement</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">has_post_decrement</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_decrement.html" title="has_post_decrement"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
@ -627,6 +636,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_post_increment</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">has_post_increment</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_post_increment.html" title="has_post_increment"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
@ -635,6 +645,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_pre_decrement</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">has_pre_decrement</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_decrement.html" title="has_pre_decrement"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
@ -643,6 +654,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_pre_increment</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">has_pre_increment</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_pre_increment.html" title="has_pre_increment"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
@ -718,6 +730,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_unary_minus</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_minus.html" title="has_unary_minus"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_minus.html" title="has_unary_minus"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_unary_minus.html" title="has_unary_minus"><span class="index-entry-level-1">has_unary_minus</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">Operator Type Traits</span></a></p></li>
|
||||
@ -727,6 +740,7 @@
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_unary_plus</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">has_unary_plus</span></a></strong></span></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_unary_plus.html" title="has_unary_plus"><span class="index-entry-level-1">trait</span></a></p></li>
|
||||
|
@ -227,6 +227,30 @@ convertible to `A`. In this case, the compiler will report an ambiguous overload
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
]
|
||||
[template prefix_operator_known_issues[Name Op]
|
||||
[*Known issues:]
|
||||
|
||||
For modern compilers (those that support arbitrary SFINAE-expressions and decltype/declval) this trait offers near perfect detection.
|
||||
In this situation the macro `BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION` will be defined after including
|
||||
[^<boost/type_traits/[Name].hpp>]. Please note however, that detection is based on function signature only,
|
||||
in the case that the operator is a function template then [Name] cannot perform
|
||||
introspection of the template function body to ensure that the type meets all of the conceptual requirements of the actual code.
|
||||
|
||||
For older compilers (`BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION` not defined) then there are a number of issues:
|
||||
|
||||
* This trait cannot detect whether unary `operator`[Op] is public or not:
|
||||
if `operator`[Op] is defined as a private class member of type T then
|
||||
instantiating [^[Name]<T>] will produce a compiler error.
|
||||
For this reason [^[Name]] cannot be used to determine whether a type has a public `operator`[Op] or not.
|
||||
|
||||
* `volatile` qualifier is not properly handled and would lead to undefined behavior
|
||||
|
||||
* Capturless lambdas are not supported and will lead to a compiler error if [Name] is instantiated
|
||||
on the lambda type.
|
||||
|
||||
* Scoped enum types are not supported and will lead to a compiler error if [Name] is instantiated on such a type.
|
||||
|
||||
]
|
||||
|
||||
|
||||
A printer-friendly [@http://sourceforge.net/projects/boost/files/boost-docs/
|
||||
|
Reference in New Issue
Block a user