From 8608d0a498dba46e5ef385d864986e309327e170 Mon Sep 17 00:00:00 2001
From: John Maddock
Class
There are far too many separate classes contained in the type-traits library
@@ -97,10 +98,10 @@
from
@@ -115,10 +116,10 @@
a pointer, and a partial specialization to handle all the cases where T is
a pointer:
@@ -154,11 +155,11 @@
that is the same type as T but with any top-level array bounds removed; this
is an example of a traits class that performs a transformation on a type:
As an example of how the type traits classes can be used, consider the standard
@@ -246,9 +248,10 @@
to the optimized version where appropriate, otherwise it will call the "slow
but safe version".
It has often been repeated in these columns that "premature optimization
@@ -378,9 +381,10 @@
The optimized copy example shows how type traits may be used to perform optimization
@@ -395,8 +399,8 @@
the comparison operators, default constructor, and template copy constructor
for simplicity:
char_traits
will use the most appropriate
method available to them.
-
-
- Type Traits
+
+
+ Type
+ Traits
char_traits
is a classic
@@ -83,9 +84,9 @@
for brevity, namespace-qualification is omitted in most of the code samples
given.
-
- Implementation
+
+
+ Implementation
true_type
only if T
is void
.
template <typename T>
+
template <typename T>
struct is_void : public false_type{};
-template <>
+template <>
struct is_void<void> : public true_type{};
template <typename T>
+
template <typename T>
struct is_pointer : public false_type{};
-template <typename T>
+template <typename T>
struct is_pointer<T*> : public true_type{};
template <typename T>
+
template <typename T>
struct remove_extent
{ typedef T type; };
-template <typename T, std::size_t N>
+template <typename T, std::size_t N>
struct remove_extent<T[N]>
{ typedef T type; };
@@ -173,9 +174,10 @@
after the class name do have to match the number and type of the parameters
in the default template.
-
-
- Optimized copy
+
+
+ Optimized
+ copy
-
- Was it worth it?
+
+
+ Was
+ it worth it?
-
- Pair of References
+
+
+ Pair
+ of References
template <typename T1, typename T2>
-struct pair
+
template <typename T1, typename T2>
+struct pair
{
typedef T1 first_type;
typedef T2 second_type;
@@ -566,8 +570,8 @@
that can contain non-reference types, reference types, and constant reference
types:
template <typename T1, typename T2> -struct pair +template <typename T1, typename T2> +struct pair { typedef T1 first_type; typedef T2 second_type; @@ -596,9 +600,9 @@ partial specialization to the type traits classes, resulting in code that is easier to maintain and easier to understand. -- - Conclusion +
+ + Conclusion
We hope that in this article we have been able to give you some idea of what @@ -609,17 +613,17 @@ does not have to sink to the lowest common denominator, and that templates can be optimal as well as generic.
-- - Acknowledgements +
+ + Acknowledgements
The authors would like to thank Beman Dawes and Howard Hinnant for their helpful comments when preparing this article.
-- - References +
+ + References
- diff --git a/doc/html/boost_typetraits/category.html b/doc/html/boost_typetraits/category.html index f639f2f..d12d8c1 100644 --- a/doc/html/boost_typetraits/category.html +++ b/doc/html/boost_typetraits/category.html @@ -3,7 +3,7 @@
Type Traits by Category - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/category/alignment.html b/doc/html/boost_typetraits/category/alignment.html index 90d68e9..1569890 100644 --- a/doc/html/boost_typetraits/category/alignment.html +++ b/doc/html/boost_typetraits/category/alignment.html @@ -3,7 +3,7 @@Synthesizing Types with Specific Alignments - + @@ -22,7 +22,7 @@ -+Synthesizing Types with Specific Alignments diff --git a/doc/html/boost_typetraits/category/function.html b/doc/html/boost_typetraits/category/function.html index 3345d52..ce2ccad 100644 --- a/doc/html/boost_typetraits/category/function.html +++ b/doc/html/boost_typetraits/category/function.html @@ -3,7 +3,7 @@
Decomposing Function Types - + @@ -22,7 +22,7 @@ -+Decomposing Function Types diff --git a/doc/html/boost_typetraits/category/transform.html b/doc/html/boost_typetraits/category/transform.html index 12694cf..1600617 100644 --- a/doc/html/boost_typetraits/category/transform.html +++ b/doc/html/boost_typetraits/category/transform.html @@ -3,7 +3,7 @@
Type Traits that Transform One Type to Another - + @@ -22,7 +22,7 @@ -+Type Traits that Transform One Type to Another @@ -102,9 +102,9 @@ template <class T> struct remove_volatile; -
- - Broken +
+ + Broken Compiler Workarounds:
diff --git a/doc/html/boost_typetraits/category/value_traits.html b/doc/html/boost_typetraits/category/value_traits.html index f4567c4..b61f824 100644 --- a/doc/html/boost_typetraits/category/value_traits.html +++ b/doc/html/boost_typetraits/category/value_traits.html @@ -3,7 +3,7 @@
Type Traits that Describe the Properties of a Type - + @@ -22,7 +22,7 @@ -+Type Traits that Describe the Properties of a Type diff --git a/doc/html/boost_typetraits/category/value_traits/operators.html b/doc/html/boost_typetraits/category/value_traits/operators.html index dc58ec3..61d5b5f 100644 --- a/doc/html/boost_typetraits/category/value_traits/operators.html +++ b/doc/html/boost_typetraits/category/value_traits/operators.html @@ -3,7 +3,7 @@
Operator Type Traits - + @@ -22,14 +22,14 @@ -+--- - Introduction +
+ + Introduction
These traits are all value traits inheriting from @@ -42,7 +42,7 @@ For example,
has_plus<int, double>::value
is abool
which value istrue
because it is possible - to add adouble
to anint
like in the following code: + to add adouble
to anint
like in the following code:int i; double d; @@ -54,7 +54,7 @@ istrue
because it is possible to add adouble
to anint
and the result (double
) can be converted to afloat
- argument like in the following code: + argument like in the following code:void f(float) { }; int i; @@ -63,9 +63,9 @@-
- - Example +
+ + Example of application
@@ -75,7 +75,6 @@ as follows:
-
#include <boost/type_traits/has_plus_assign.hpp> @@ -117,7 +116,6 @@ operation:-
#include <iostream> @@ -150,12 +148,12 @@-
- - Description +
+ + Description
- The syntax is the following: + The syntax is the following:
template< class Rhs, class Ret=dont_care >
has_op; // prefix operator template< class Lhs, class Ret=dont_care >
has_op; // postfix operator @@ -190,7 +188,7 @@ to be convertible toRet
. Convertible toRet
means that the return value can be used as argument to a function expecting -Ret
: +Ret
:void f(Ret); Lhs lhs; @@ -734,23 +732,23 @@ using the same technique:operator=
,operator->
,operator&
,operator[]
,operator,
,operator()
,operator new
. -- - cv +
+ + cv qualifiers and references
A reference sign
&
in the operator argument is ignored so thathas_plus< int&, double& >::value==has_plus< int, double >::value
. This has been chosen because if - the following code works (does not work): + the following code works (does not work):int i; double d; i+d;- the following code also works (does not work): + the following code also works (does not work):
int &ir=i; double &dr=d; @@ -1129,17 +1127,17 @@- - Implementation +
+ + Implementation
The implementation consists in only header files. The following headers - should included first: + should included first:
#include <boost/type_traits/has_operator.hpp>- or + or
#include <boost/type_traits/has_op.hpp>@@ -1155,7 +1153,6 @@ is presented below:
-
namespace boost { namespace detail { @@ -1322,16 +1319,16 @@-
- - Limitation +
+ + Limitation
-
- Requires a compiler with working SFINAE.
- - Known +
+ + Known issues
-@@ -1339,7 +1336,7 @@ These traits cannot detect whether the operators are public or not: if an operator is defined as a private member of type
T
then the instantiation of the corresponding trait will produce a compiler error. For this reason these traits cannot - be used to determine whether a type has a public operator or not. + be used to determine whether a type has a public operator or not.struct A { private: A operator-(); }; boost::has_unary_minus<A>::value; // error: A::operator-() is private@@ -1350,7 +1347,7 @@ In this case, the compiler will report an ambiguous overload because both the existing operator and the one we provide (with argument of typeany
) need type - conversion, so that none is preferred. + conversion, so that none is preferred.struct A { }; void operator-(const A&); struct B { operator A(); }; @@ -1360,7 +1357,6 @@ // operator-(const A&) // both need type conversion-struct B { }; struct A { A(const B&) { } }; void operator-(const A&); @@ -1378,7 +1374,7 @@ instead offalse
. This applies in particular to the containers of the standard library andoperator==
. - Example: + Example:#include <boost/type_traits/has_equal_to.hpp> #include <iostream> @@ -1413,9 +1409,9 @@ not properly handled and would lead to undefined behavior- - Acknowledgments +
+ + Acknowledgments
Frederic Bron is very thankful to numerous people from the boost mailing diff --git a/doc/html/boost_typetraits/category/value_traits/primary.html b/doc/html/boost_typetraits/category/value_traits/primary.html index b57cb42..d471058 100644 --- a/doc/html/boost_typetraits/category/value_traits/primary.html +++ b/doc/html/boost_typetraits/category/value_traits/primary.html @@ -3,7 +3,7 @@
Categorizing a Type - + @@ -22,7 +22,7 @@ -+Categorizing a Type @@ -50,43 +50,43 @@
template <class T> struct is_array; - + template <class T> struct is_class; template <class T> struct is_complex; - + template <class T> struct is_enum; - + template <class T> struct is_floating_point; - + template <class T> struct is_function; template <class T> struct is_integral; - + template <class T> struct is_member_function_pointer; - + template <class T> struct is_member_object_pointer; - + template <class T> struct is_pointer; - + template <class T> struct is_lvalue_reference; - + template <class T> struct is_rvalue_reference; - + template <class T> struct is_union; - + template <class T> struct is_void;@@ -112,7 +112,7 @@ template <class T> struct is_reference; - + template <class T> struct is_scalar; diff --git a/doc/html/boost_typetraits/category/value_traits/properties.html b/doc/html/boost_typetraits/category/value_traits/properties.html index e70748d..a6e4ecf 100644 --- a/doc/html/boost_typetraits/category/value_traits/properties.html +++ b/doc/html/boost_typetraits/category/value_traits/properties.html @@ -3,7 +3,7 @@General Type Properties - + @@ -22,7 +22,7 @@ -+General Type Properties diff --git a/doc/html/boost_typetraits/category/value_traits/relate.html b/doc/html/boost_typetraits/category/value_traits/relate.html index 93d8328..1a437a4 100644 --- a/doc/html/boost_typetraits/category/value_traits/relate.html +++ b/doc/html/boost_typetraits/category/value_traits/relate.html @@ -3,7 +3,7 @@
Relationships Between Two Types - + @@ -22,7 +22,7 @@ -+Relationships Between Two Types diff --git a/doc/html/boost_typetraits/credits.html b/doc/html/boost_typetraits/credits.html index 7695780..fd675a4 100644 --- a/doc/html/boost_typetraits/credits.html +++ b/doc/html/boost_typetraits/credits.html @@ -3,7 +3,7 @@
Credits - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/examples.html b/doc/html/boost_typetraits/examples.html index 9d96e46..2dd3819 100644 --- a/doc/html/boost_typetraits/examples.html +++ b/doc/html/boost_typetraits/examples.html @@ -3,7 +3,7 @@Examples - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/examples/copy.html b/doc/html/boost_typetraits/examples/copy.html index ac7f41f..2bdcef4 100644 --- a/doc/html/boost_typetraits/examples/copy.html +++ b/doc/html/boost_typetraits/examples/copy.html @@ -3,7 +3,7 @@An Optimized Version of std::copy - + @@ -22,7 +22,7 @@ -+An Optimized Version of std::copy diff --git a/doc/html/boost_typetraits/examples/destruct.html b/doc/html/boost_typetraits/examples/destruct.html index 8e1a14f..362979d 100644 --- a/doc/html/boost_typetraits/examples/destruct.html +++ b/doc/html/boost_typetraits/examples/destruct.html @@ -3,7 +3,7 @@
An Example that Omits Destructor Calls For Types with Trivial Destructors - + @@ -22,7 +22,7 @@ -+An Example that Omits Destructor Calls For Types with Trivial Destructors diff --git a/doc/html/boost_typetraits/examples/fill.html b/doc/html/boost_typetraits/examples/fill.html index 185b1d2..bd9c1a3 100644 --- a/doc/html/boost_typetraits/examples/fill.html +++ b/doc/html/boost_typetraits/examples/fill.html @@ -3,7 +3,7 @@
An Optimised Version of std::fill - + @@ -22,7 +22,7 @@ -+An Optimised Version of std::fill @@ -64,7 +64,7 @@ // We can do an optimised fill if T has a trivial assignment // operator and if it's size is one: // - typedef boost::integral_constant<bool, + typedef boost::integral_constant<bool, ::boost::has_trivial_assign<T>::value && (sizeof(T) == 1)> truth_type; detail::do_fill(first, last, val, truth_type()); } diff --git a/doc/html/boost_typetraits/examples/improved_min.html b/doc/html/boost_typetraits/examples/improved_min.html index b246b9a..49e1a33 100644 --- a/doc/html/boost_typetraits/examples/improved_min.html +++ b/doc/html/boost_typetraits/examples/improved_min.html @@ -3,7 +3,7 @@
Improving std::min with common_type - + @@ -22,7 +22,7 @@ -+Improving std::min with common_type diff --git a/doc/html/boost_typetraits/examples/iter.html b/doc/html/boost_typetraits/examples/iter.html index f7d6440..61f9d05 100644 --- a/doc/html/boost_typetraits/examples/iter.html +++ b/doc/html/boost_typetraits/examples/iter.html @@ -3,7 +3,7 @@
An improved Version of std::iter_swap - + @@ -22,7 +22,7 @@ -+An improved Version of std::iter_swap diff --git a/doc/html/boost_typetraits/examples/to_double.html b/doc/html/boost_typetraits/examples/to_double.html index a798db6..1af7c83 100644 --- a/doc/html/boost_typetraits/examples/to_double.html +++ b/doc/html/boost_typetraits/examples/to_double.html @@ -3,7 +3,7 @@
Convert Numeric Types and Enums to double - + @@ -22,7 +22,7 @@ -+Convert Numeric Types and Enums to double diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html index 0567db7..a914041 100644 --- a/doc/html/boost_typetraits/history.html +++ b/doc/html/boost_typetraits/history.html @@ -3,7 +3,7 @@
History - + @@ -22,13 +22,14 @@ -+-- - Boost 1.47.0 +
+ + Boost + 1.47.0
-
- @@ -40,9 +41,10 @@ #4530.
- - Boost 1.45.0 +
+ + Boost + 1.45.0
-
- @@ -56,9 +58,10 @@ and is_virtual_base_of.
- - Boost 1.44.0 +
+ + Boost + 1.44.0
-
- @@ -72,9 +75,10 @@ Fixed ticket #3621.
- - Boost 1.42.0 +
+ + Boost + 1.42.0
- Fixed issue #3704. diff --git a/doc/html/boost_typetraits/intrinsics.html b/doc/html/boost_typetraits/intrinsics.html index 8429c36..10c9fb7 100644 --- a/doc/html/boost_typetraits/intrinsics.html +++ b/doc/html/boost_typetraits/intrinsics.html @@ -3,7 +3,7 @@
Support for Compiler Intrinsics - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/intro.html b/doc/html/boost_typetraits/intro.html index 27e8875..2fe0914 100644 --- a/doc/html/boost_typetraits/intro.html +++ b/doc/html/boost_typetraits/intro.html @@ -3,7 +3,7 @@Introduction - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/mpl.html b/doc/html/boost_typetraits/mpl.html index 31b9322..62defb7 100644 --- a/doc/html/boost_typetraits/mpl.html +++ b/doc/html/boost_typetraits/mpl.html @@ -3,7 +3,7 @@MPL Interoperability - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference.html b/doc/html/boost_typetraits/reference.html index f9c7097..0a35644 100644 --- a/doc/html/boost_typetraits/reference.html +++ b/doc/html/boost_typetraits/reference.html @@ -3,7 +3,7 @@Alphabetical Reference - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_const.html b/doc/html/boost_typetraits/reference/add_const.html index 9255f97..e719635 100644 --- a/doc/html/boost_typetraits/reference/add_const.html +++ b/doc/html/boost_typetraits/reference/add_const.html @@ -3,7 +3,7 @@add_const - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_cv.html b/doc/html/boost_typetraits/reference/add_cv.html index 17dca29..4e2f718 100644 --- a/doc/html/boost_typetraits/reference/add_cv.html +++ b/doc/html/boost_typetraits/reference/add_cv.html @@ -3,7 +3,7 @@add_cv - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_lvalue_reference.html b/doc/html/boost_typetraits/reference/add_lvalue_reference.html index d70d608..e1baab1 100644 --- a/doc/html/boost_typetraits/reference/add_lvalue_reference.html +++ b/doc/html/boost_typetraits/reference/add_lvalue_reference.html @@ -3,7 +3,7 @@add_lvalue_reference - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_pointer.html b/doc/html/boost_typetraits/reference/add_pointer.html index 966beb3..aef26de 100644 --- a/doc/html/boost_typetraits/reference/add_pointer.html +++ b/doc/html/boost_typetraits/reference/add_pointer.html @@ -3,7 +3,7 @@add_pointer - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_reference.html b/doc/html/boost_typetraits/reference/add_reference.html index d48b4cf..e44e7fd 100644 --- a/doc/html/boost_typetraits/reference/add_reference.html +++ b/doc/html/boost_typetraits/reference/add_reference.html @@ -3,7 +3,7 @@add_reference - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_rvalue_reference.html b/doc/html/boost_typetraits/reference/add_rvalue_reference.html index da4e66f..51694c6 100644 --- a/doc/html/boost_typetraits/reference/add_rvalue_reference.html +++ b/doc/html/boost_typetraits/reference/add_rvalue_reference.html @@ -3,7 +3,7 @@add_rvalue_reference - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/add_volatile.html b/doc/html/boost_typetraits/reference/add_volatile.html index e55fa00..6c2372d 100644 --- a/doc/html/boost_typetraits/reference/add_volatile.html +++ b/doc/html/boost_typetraits/reference/add_volatile.html @@ -3,7 +3,7 @@add_volatile - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/aligned_storage.html b/doc/html/boost_typetraits/reference/aligned_storage.html index 94afbee..86bc3a5 100644 --- a/doc/html/boost_typetraits/reference/aligned_storage.html +++ b/doc/html/boost_typetraits/reference/aligned_storage.html @@ -3,7 +3,7 @@aligned_storage - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/alignment_of.html b/doc/html/boost_typetraits/reference/alignment_of.html index d2f4f0e..a3cb1a9 100644 --- a/doc/html/boost_typetraits/reference/alignment_of.html +++ b/doc/html/boost_typetraits/reference/alignment_of.html @@ -3,7 +3,7 @@alignment_of - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/common_type.html b/doc/html/boost_typetraits/reference/common_type.html index 16190ce..2b58fba 100644 --- a/doc/html/boost_typetraits/reference/common_type.html +++ b/doc/html/boost_typetraits/reference/common_type.html @@ -3,7 +3,7 @@common_type - + @@ -22,7 +22,7 @@ -+@@ -74,9 +74,9 @@ macro BOOST_NO_VARIADIC_TEMPLATES is defined) then the maximum number of template arguments is 3. -- - Configuration +
+ + Configuration macros
@@ -104,9 +104,9 @@ When possible common_type is implemented using
-decltype
. Otherwise when BOOST_COMMON_TYPE_DONT_USE_TYPEOF is not defined it uses Boost.TypeOf.- - Tutorial +
+ + Tutorial
In a nutshell, common_type @@ -139,9 +139,9 @@
This is a very useful and broadly applicable utility.
-- - How +
+ + How to get the common type of types with explicit conversions?
@@ -161,9 +161,9 @@ typedef complex< common_type<T, U> > type; }; -
- - How +
+ + How important is the order of the common_type<> template arguments?
@@ -215,7 +215,7 @@ template <> struct common_type<A, B> {typedef C type;}; -} +}
Now this client can ask for
common_type<A, @@ -233,7 +233,7 @@ template <> struct common_type<B, A> : public common_type<A, B> {}; -} +}
This is needed as the specialization of
-common_type<A, @@ -241,9 +241,9 @@ is not be used implicitly for
common_type<B, A>
.- - Can +
+ + Can the common_type of two types be a third type?
@@ -262,15 +262,15 @@ template <> struct common_type<B, A> : public common_type<A, B> {}; -} +}
Now this client can ask for
-common_type<A, B>
.- - How +
+ + How common_type behaves with pointers?
@@ -304,9 +304,9 @@
Of course the user can always make this specialization.
-- - Can +
+ + Can you explain the pros/cons of common_type against Boost.Typeof?
diff --git a/doc/html/boost_typetraits/reference/conditional.html b/doc/html/boost_typetraits/reference/conditional.html index 773e12d..31b27b4 100644 --- a/doc/html/boost_typetraits/reference/conditional.html +++ b/doc/html/boost_typetraits/reference/conditional.html @@ -3,7 +3,7 @@
conditional - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/decay.html b/doc/html/boost_typetraits/reference/decay.html index ea5f858..937b201 100644 --- a/doc/html/boost_typetraits/reference/decay.html +++ b/doc/html/boost_typetraits/reference/decay.html @@ -3,7 +3,7 @@decay - + @@ -22,7 +22,7 @@ -+@@ -106,7 +106,7 @@-
int(*)(double
+int(*)(double)
diff --git a/doc/html/boost_typetraits/reference/extent.html b/doc/html/boost_typetraits/reference/extent.html index 6165ae5..de97c23 100644 --- a/doc/html/boost_typetraits/reference/extent.html +++ b/doc/html/boost_typetraits/reference/extent.html @@ -3,7 +3,7 @@ extent - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/floating_point_promotion.html b/doc/html/boost_typetraits/reference/floating_point_promotion.html index f96108e..e96f364 100644 --- a/doc/html/boost_typetraits/reference/floating_point_promotion.html +++ b/doc/html/boost_typetraits/reference/floating_point_promotion.html @@ -3,7 +3,7 @@floating_point_promotion - + @@ -22,7 +22,7 @@ -+diff --git a/doc/html/boost_typetraits/reference/function_traits.html b/doc/html/boost_typetraits/reference/function_traits.html index 413eef0..98d85e1 100644 --- a/doc/html/boost_typetraits/reference/function_traits.html +++ b/doc/html/boost_typetraits/reference/function_traits.html @@ -3,7 +3,7 @@function_traits - + @@ -22,7 +22,7 @@ -+@@ -31,7 +31,7 @@ { static const std::size_t arity =see-below
; typedefsee-below
result_type; - typedefsee-below
argN
_type; + typedefsee-below
argN
_type; };diff --git a/doc/html/boost_typetraits/reference/has_bit_and.html b/doc/html/boost_typetraits/reference/has_bit_and.html index aa501d4..2945970 100644 --- a/doc/html/boost_typetraits/reference/has_bit_and.html +++ b/doc/html/boost_typetraits/reference/has_bit_and.html @@ -3,7 +3,7 @@
has_bit_and - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -115,7 +115,7 @@ then instantiatinghas_bit_and<Lhs>
will produce a compiler error. For this reasonhas_bit_and
cannot be used to determine whether a type has a publicoperator&
- or not. + or not.struct A { private: void operator&(const A&); }; boost::has_bit_and<A>::value; // error: A::operator&(const A&) is private@@ -123,7 +123,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator&(const A&, const A&); struct B { operator A(); }; @@ -136,7 +136,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_and.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_bit_and_assign.html b/doc/html/boost_typetraits/reference/has_bit_and_assign.html index 58b29e9..c52aa27 100644 --- a/doc/html/boost_typetraits/reference/has_bit_and_assign.html +++ b/doc/html/boost_typetraits/reference/has_bit_and_assign.html @@ -3,7 +3,7 @@has_bit_and_assign - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -115,7 +115,7 @@ then instantiatinghas_bit_and_assign<Lhs>
will produce a compiler error. For this reasonhas_bit_and_assign
cannot be used to determine whether a type has a publicoperator&=
- or not. + or not.struct A { private: void operator&=(const A&); }; boost::has_bit_and_assign<A>::value; // error: A::operator&=(const A&) is private@@ -123,7 +123,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator&=(const A&, const A&); struct B { operator A(); }; @@ -136,7 +136,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_and_assign.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_bit_or.html b/doc/html/boost_typetraits/reference/has_bit_or.html index ab9287e..543496f 100644 --- a/doc/html/boost_typetraits/reference/has_bit_or.html +++ b/doc/html/boost_typetraits/reference/has_bit_or.html @@ -3,7 +3,7 @@has_bit_or - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -113,7 +113,7 @@ This trait cannot detect whether binaryoperator|
is public or not: ifoperator|
is defined as a private member ofLhs
then instantiatinghas_bit_or<Lhs>
will produce a compiler error. For this reasonhas_bit_or
cannot be used to determine whether a type has a publicoperator|
- or not. + or not.struct A { private: void operator|(const A&); }; boost::has_bit_or<A>::value; // error: A::operator|(const A&) is private@@ -121,7 +121,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator|(const A&, const A&); struct B { operator A(); }; @@ -134,7 +134,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_or.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_bit_or_assign.html b/doc/html/boost_typetraits/reference/has_bit_or_assign.html index 969ade9..a5c0fc8 100644 --- a/doc/html/boost_typetraits/reference/has_bit_or_assign.html +++ b/doc/html/boost_typetraits/reference/has_bit_or_assign.html @@ -3,7 +3,7 @@has_bit_or_assign - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -115,7 +115,7 @@ then instantiatinghas_bit_or_assign<Lhs>
will produce a compiler error. For this reasonhas_bit_or_assign
cannot be used to determine whether a type has a publicoperator|=
- or not. + or not.struct A { private: void operator|=(const A&); }; boost::has_bit_or_assign<A>::value; // error: A::operator|=(const A&) is private@@ -123,7 +123,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator|=(const A&, const A&); struct B { operator A(); }; @@ -136,7 +136,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_or_assign.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_bit_xor.html b/doc/html/boost_typetraits/reference/has_bit_xor.html index d1a282d..fd8a0a8 100644 --- a/doc/html/boost_typetraits/reference/has_bit_xor.html +++ b/doc/html/boost_typetraits/reference/has_bit_xor.html @@ -3,7 +3,7 @@has_bit_xor - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -113,7 +113,7 @@ This trait cannot detect whether binaryoperator^
is public or not: ifoperator^
is defined as a private member ofLhs
then instantiatinghas_bit_xor<Lhs>
will produce a compiler error. For this reasonhas_bit_xor
cannot be used to determine whether a type has a publicoperator^
- or not. + or not.struct A { private: void operator^(const A&); }; boost::has_bit_xor<A>::value; // error: A::operator^(const A&) is private@@ -121,7 +121,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator^(const A&, const A&); struct B { operator A(); }; @@ -134,7 +134,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_xor.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_bit_xor_assign.html b/doc/html/boost_typetraits/reference/has_bit_xor_assign.html index 341274a..2a0623e 100644 --- a/doc/html/boost_typetraits/reference/has_bit_xor_assign.html +++ b/doc/html/boost_typetraits/reference/has_bit_xor_assign.html @@ -3,7 +3,7 @@has_bit_xor_assign - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -115,7 +115,7 @@ then instantiatinghas_bit_xor_assign<Lhs>
will produce a compiler error. For this reasonhas_bit_xor_assign
cannot be used to determine whether a type has a publicoperator^=
- or not. + or not.struct A { private: void operator^=(const A&); }; boost::has_bit_xor_assign<A>::value; // error: A::operator^=(const A&) is private@@ -123,7 +123,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator^=(const A&, const A&); struct B { operator A(); }; @@ -136,7 +136,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_bit_xor_assign.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_complement.html b/doc/html/boost_typetraits/reference/has_complement.html index 20ed5b0..69a136d 100644 --- a/doc/html/boost_typetraits/reference/has_complement.html +++ b/doc/html/boost_typetraits/reference/has_complement.html @@ -3,7 +3,7 @@has_complement - + @@ -22,7 +22,7 @@ -+@@ -46,7 +46,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Rhs rhs; @@ -122,7 +122,7 @@ This trait cannot detect whether prefixoperator~
is public or not: ifoperator~
is defined as a private member ofRhs
then instantiatinghas_complement<Rhs>
will produce a compiler error. For this reasonhas_complement
cannot be used to determine whether a type has a publicoperator~
- or not. + or not.struct A { private: void operator~(); }; boost::has_complement<A>::value; // error: A::operator~() is private@@ -130,7 +130,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator~(const A&); struct B { operator A(); }; @@ -143,7 +143,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_complement.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_dereference.html b/doc/html/boost_typetraits/reference/has_dereference.html index 2e6e4b1..f34444b 100644 --- a/doc/html/boost_typetraits/reference/has_dereference.html +++ b/doc/html/boost_typetraits/reference/has_dereference.html @@ -3,7 +3,7 @@has_dereference - + @@ -22,7 +22,7 @@ -+@@ -46,7 +46,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Rhs rhs; @@ -131,7 +131,7 @@ This trait cannot detect whether prefixoperator*
is public or not: ifoperator*
is defined as a private member ofRhs
then instantiatinghas_dereference<Rhs>
will produce a compiler error. For this reasonhas_dereference
cannot be used to determine whether a type has a publicoperator*
- or not. + or not.struct A { private: void operator*(); }; boost::has_dereference<A>::value; // error: A::operator*() is private@@ -139,7 +139,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator*(const A&); struct B { operator A(); }; @@ -152,7 +152,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_dereference.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_divides.html b/doc/html/boost_typetraits/reference/has_divides.html index cfe31af..6192c3d 100644 --- a/doc/html/boost_typetraits/reference/has_divides.html +++ b/doc/html/boost_typetraits/reference/has_divides.html @@ -3,7 +3,7 @@has_divides - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -119,7 +119,7 @@ This trait cannot detect whether binaryoperator/
is public or not: ifoperator/
is defined as a private member ofLhs
then instantiatinghas_divides<Lhs>
will produce a compiler error. For this reasonhas_divides
cannot be used to determine whether a type has a publicoperator/
- or not. + or not.struct A { private: void operator/(const A&); }; boost::has_divides<A>::value; // error: A::operator/(const A&) is private@@ -127,7 +127,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator/(const A&, const A&); struct B { operator A(); }; @@ -140,7 +140,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_divides.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_divides_assign.html b/doc/html/boost_typetraits/reference/has_divides_assign.html index 59ea88b..2fe854f 100644 --- a/doc/html/boost_typetraits/reference/has_divides_assign.html +++ b/doc/html/boost_typetraits/reference/has_divides_assign.html @@ -3,7 +3,7 @@has_divides_assign - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -121,7 +121,7 @@ then instantiatinghas_divides_assign<Lhs>
will produce a compiler error. For this reasonhas_divides_assign
cannot be used to determine whether a type has a publicoperator/=
- or not. + or not.struct A { private: void operator/=(const A&); }; boost::has_divides_assign<A>::value; // error: A::operator/=(const A&) is private@@ -129,7 +129,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator/=(const A&, const A&); struct B { operator A(); }; @@ -142,7 +142,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_divides_assign.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_equal_to.html b/doc/html/boost_typetraits/reference/has_equal_to.html index d12ce44..2f2f2f1 100644 --- a/doc/html/boost_typetraits/reference/has_equal_to.html +++ b/doc/html/boost_typetraits/reference/has_equal_to.html @@ -3,7 +3,7 @@has_equal_to - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -120,7 +120,7 @@ then instantiatinghas_equal_to<Lhs>
will produce a compiler error. For this reasonhas_equal_to
cannot be used to determine whether a type has a publicoperator==
- or not. + or not.struct A { private: void operator==(const A&); }; boost::has_equal_to<A>::value; // error: A::operator==(const A&) is private@@ -128,7 +128,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator==(const A&, const A&); struct B { operator A(); }; @@ -141,7 +141,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_equal_to.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_greater.html b/doc/html/boost_typetraits/reference/has_greater.html index 428e6cf..a7a8709 100644 --- a/doc/html/boost_typetraits/reference/has_greater.html +++ b/doc/html/boost_typetraits/reference/has_greater.html @@ -3,7 +3,7 @@has_greater - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -120,7 +120,7 @@ then instantiatinghas_greater<Lhs>
will produce a compiler error. For this reasonhas_greater
cannot be used to determine whether a type has a publicoperator>
- or not. + or not.struct A { private: void operator>(const A&); }; boost::has_greater<A>::value; // error: A::operator>(const A&) is private@@ -128,7 +128,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator>(const A&, const A&); struct B { operator A(); }; @@ -141,7 +141,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_greater.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_greater_equal.html b/doc/html/boost_typetraits/reference/has_greater_equal.html index 6e86269..245b7c7 100644 --- a/doc/html/boost_typetraits/reference/has_greater_equal.html +++ b/doc/html/boost_typetraits/reference/has_greater_equal.html @@ -3,7 +3,7 @@has_greater_equal - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -120,7 +120,7 @@ then instantiatinghas_greater_equal<Lhs>
will produce a compiler error. For this reasonhas_greater_equal
cannot be used to determine whether a type has a publicoperator>=
- or not. + or not.struct A { private: void operator>=(const A&); }; boost::has_greater_equal<A>::value; // error: A::operator>=(const A&) is private@@ -128,7 +128,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator>=(const A&, const A&); struct B { operator A(); }; @@ -141,7 +141,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_greater_equal.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_left_shift.html b/doc/html/boost_typetraits/reference/has_left_shift.html index 536a82d..135b468 100644 --- a/doc/html/boost_typetraits/reference/has_left_shift.html +++ b/doc/html/boost_typetraits/reference/has_left_shift.html @@ -3,7 +3,7 @@has_left_shift - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -127,7 +127,7 @@ then instantiatinghas_left_shift<Lhs>
will produce a compiler error. For this reasonhas_left_shift
cannot be used to determine whether a type has a publicoperator<<
- or not. + or not.struct A { private: void operator<<(const A&); }; boost::has_left_shift<A>::value; // error: A::operator<<(const A&) is private@@ -135,7 +135,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator<<(const A&, const A&); struct B { operator A(); }; @@ -148,7 +148,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_left_shift.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_left_shift_assign.html b/doc/html/boost_typetraits/reference/has_left_shift_assign.html index ccd2845..dcdb8bc 100644 --- a/doc/html/boost_typetraits/reference/has_left_shift_assign.html +++ b/doc/html/boost_typetraits/reference/has_left_shift_assign.html @@ -3,7 +3,7 @@has_left_shift_assign - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -115,7 +115,7 @@ then instantiatinghas_left_shift_assign<Lhs>
will produce a compiler error. For this reasonhas_left_shift_assign
cannot be used to determine whether a type has a publicoperator<<=
- or not. + or not.struct A { private: void operator<<=(const A&); }; boost::has_left_shift_assign<A>::value; // error: A::operator<<=(const A&) is private@@ -123,7 +123,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator<<=(const A&, const A&); struct B { operator A(); }; @@ -136,7 +136,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_left_shift_assign.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_less.html b/doc/html/boost_typetraits/reference/has_less.html index 5e74681..235e5ea 100644 --- a/doc/html/boost_typetraits/reference/has_less.html +++ b/doc/html/boost_typetraits/reference/has_less.html @@ -3,7 +3,7 @@has_less - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -120,7 +120,7 @@ then instantiatinghas_less<Lhs>
will produce a compiler error. For this reasonhas_less
cannot be used to determine whether a type has a publicoperator<
- or not. + or not.struct A { private: void operator<(const A&); }; boost::has_less<A>::value; // error: A::operator<(const A&) is private@@ -128,7 +128,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator<(const A&, const A&); struct B { operator A(); }; @@ -141,7 +141,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_less.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_less_equal.html b/doc/html/boost_typetraits/reference/has_less_equal.html index d442813..dea4f75 100644 --- a/doc/html/boost_typetraits/reference/has_less_equal.html +++ b/doc/html/boost_typetraits/reference/has_less_equal.html @@ -3,7 +3,7 @@has_less_equal - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -120,7 +120,7 @@ then instantiatinghas_less_equal<Lhs>
will produce a compiler error. For this reasonhas_less_equal
cannot be used to determine whether a type has a publicoperator<=
- or not. + or not.struct A { private: void operator<=(const A&); }; boost::has_less_equal<A>::value; // error: A::operator<=(const A&) is private@@ -128,7 +128,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator<=(const A&, const A&); struct B { operator A(); }; @@ -141,7 +141,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_less_equal.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_logical_and.html b/doc/html/boost_typetraits/reference/has_logical_and.html index eeceffd..5ae635c 100644 --- a/doc/html/boost_typetraits/reference/has_logical_and.html +++ b/doc/html/boost_typetraits/reference/has_logical_and.html @@ -3,7 +3,7 @@has_logical_and - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -118,7 +118,7 @@ then instantiatinghas_logical_and<Lhs>
will produce a compiler error. For this reasonhas_logical_and
cannot be used to determine whether a type has a publicoperator&&
- or not. + or not.struct A { private: void operator&&(const A&); }; boost::has_logical_and<A>::value; // error: A::operator&&(const A&) is private@@ -126,7 +126,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator&&(const A&, const A&); struct B { operator A(); }; @@ -139,7 +139,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_logical_and.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_logical_not.html b/doc/html/boost_typetraits/reference/has_logical_not.html index 99a65ba..f2fd5a8 100644 --- a/doc/html/boost_typetraits/reference/has_logical_not.html +++ b/doc/html/boost_typetraits/reference/has_logical_not.html @@ -3,7 +3,7 @@has_logical_not - + @@ -22,7 +22,7 @@ -+@@ -46,7 +46,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Rhs rhs; @@ -118,7 +118,7 @@ This trait cannot detect whether prefixoperator!
is public or not: ifoperator!
is defined as a private member ofRhs
then instantiatinghas_logical_not<Rhs>
will produce a compiler error. For this reasonhas_logical_not
cannot be used to determine whether a type has a publicoperator!
- or not. + or not.struct A { private: void operator!(); }; boost::has_logical_not<A>::value; // error: A::operator!() is private@@ -126,7 +126,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator!(const A&); struct B { operator A(); }; @@ -139,7 +139,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_logical_not.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_logical_or.html b/doc/html/boost_typetraits/reference/has_logical_or.html index b697960..e3609d8 100644 --- a/doc/html/boost_typetraits/reference/has_logical_or.html +++ b/doc/html/boost_typetraits/reference/has_logical_or.html @@ -3,7 +3,7 @@has_logical_or - + @@ -22,7 +22,7 @@ -+@@ -45,7 +45,7 @@ type, the return value is checked to be convertible toRet
. Convertible toRet
means that the return value of the operator can be used as argument to a function - expectingRet
: + expectingRet
:void f(Ret); Lhs lhs; @@ -118,7 +118,7 @@ then instantiatinghas_logical_or<Lhs>
will produce a compiler error. For this reasonhas_logical_or
cannot be used to determine whether a type has a publicoperator||
- or not. + or not.struct A { private: void operator||(const A&); }; boost::has_logical_or<A>::value; // error: A::operator||(const A&) is private@@ -126,7 +126,7 @@- There is an issue if the operator exists only for type
A
andB
is convertible toA
. - In this case, the compiler will report an ambiguous overload. + In this case, the compiler will report an ambiguous overload.struct A { }; void operator||(const A&, const A&); struct B { operator A(); }; @@ -139,7 +139,6 @@ is defined but does not bind for a given template type, it is still detected by the trait which returnstrue
instead offalse
. Example: -#include <boost/type_traits/has_logical_or.hpp> #include <iostream> diff --git a/doc/html/boost_typetraits/reference/has_minus.html b/doc/html/boost_typetraits/reference/has_minus.html index ad4a2f6..756bcf5 100644 --- a/doc/html/boost_typetraits/reference/has_minus.html +++ b/doc/html/boost_typetraits/reference/has_minus.html @@ -3,7 +3,7 @@has_minus - + @@ -22,7 +22,7 @@ -+