Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68660 - in sandbox/type_traits: boost/type_traits boost/type_traits/detail libs/type_traits/test
From: frederic.bron_at_[hidden]
Date: 2011-02-05 15:58:05


Author: bronf
Date: 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
New Revision: 68660
URL: http://svn.boost.org/trac/boost/changeset/68660

Log:
operator traits: use is_fundamental when possible, bug fixed with binary operator involving user type and pointer
Text files modified:
   sandbox/type_traits/boost/type_traits/detail/has_binary_operator.hpp | 1 +
   sandbox/type_traits/boost/type_traits/detail/has_postfix_operator.hpp | 1 +
   sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp | 1 +
   sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_complement.hpp | 9 ++-------
   sandbox/type_traits/boost/type_traits/has_operator_divides.hpp | 18 +++++++++++++++---
   sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp | 18 +++++++++++++++---
   sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_greater.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_less.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp | 22 +++++++---------------
   sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp | 22 +++++++---------------
   sandbox/type_traits/boost/type_traits/has_operator_minus.hpp | 24 +++++++++++++++---------
   sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp | 17 ++++++++++-------
   sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp | 18 +++++++++++++++---
   sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp | 18 +++++++++++++++---
   sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp | 18 +++---------------
   sandbox/type_traits/boost/type_traits/has_operator_plus.hpp | 30 ++++++++++--------------------
   sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp | 27 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp | 29 +++++++++++++++--------------
   sandbox/type_traits/libs/type_traits/test/has_binary_logical_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_binary_minus_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_binary_plus_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_comparison_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_integral_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_minus_equal_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_no_pointer_operator_test.hpp | 11 +++++++++++
   sandbox/type_traits/libs/type_traits/test/has_plus_equal_operator_test.hpp | 11 +++++++++++
   40 files changed, 414 insertions(+), 356 deletions(-)

Modified: sandbox/type_traits/boost/type_traits/detail/has_binary_operator.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/detail/has_binary_operator.hpp (original)
+++ sandbox/type_traits/boost/type_traits/detail/has_binary_operator.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -12,6 +12,7 @@
 #include <boost/type_traits/is_base_of.hpp>
 #include <boost/type_traits/is_class.hpp>
 #include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_pointer.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/type_traits/boost/type_traits/detail/has_postfix_operator.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/detail/has_postfix_operator.hpp (original)
+++ sandbox/type_traits/boost/type_traits/detail/has_postfix_operator.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -9,6 +9,7 @@
 #include <boost/config.hpp>
 #include <boost/type_traits/ice.hpp>
 #include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
 #include <boost/type_traits/is_pointer.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/is_void.hpp>

Modified: sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp (original)
+++ sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -10,6 +10,7 @@
 #include <boost/type_traits/ice.hpp>
 #include <boost/type_traits/integral_constant.hpp>
 #include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_pointer.hpp>
 #include <boost/type_traits/is_same.hpp>

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_complement.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_complement.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_complement.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -16,14 +16,9 @@
    ::boost::type_traits::ice_or<\
       /* pointer */\
       ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- /* non integral built-in */\
+ /* fundamental non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value

Modified: sandbox/type_traits/boost/type_traits/has_operator_divides.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_divides.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_divides.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,10 +13,22 @@
 #define BOOST_TT_TRAIT_OP /
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
+ /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,10 +13,22 @@
 #define BOOST_TT_TRAIT_OP /=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
+ /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_greater.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_greater.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_greater.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_less.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_less.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_less.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,28 +13,20 @@
 #define BOOST_TT_TRAIT_OP &&
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* pointer with built-in non convertible to bool */\
+ /* pointer with fundamental non convertible to bool */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_convertible< typename ::boost::remove_reference<RHS>::type, bool >::value\
- >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< typename ::boost::remove_reference<RHS>::type, bool >::value >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_convertible< typename ::boost::remove_reference<LHS>::type, bool >::value\
- >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< typename ::boost::remove_reference<LHS>::type, bool >::value >::value\
>::value\
>::value\
>::value

Modified: sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,28 +13,20 @@
 #define BOOST_TT_TRAIT_OP ||
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* pointer with built-in non convertible to bool */\
+ /* pointer with fundamental non convertible to bool */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_convertible< typename ::boost::remove_reference<RHS>::type, bool >::value\
- >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< typename ::boost::remove_reference<RHS>::type, bool >::value >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_convertible< typename ::boost::remove_reference<LHS>::type, bool >::value\
- >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< typename ::boost::remove_reference<LHS>::type, bool >::value >::value\
>::value\
>::value\
>::value

Modified: sandbox/type_traits/boost/type_traits/has_operator_minus.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_minus.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_minus.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,33 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one is void* */\
+ /* void* with fundamental or pointer */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value\
+ ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
>::value,\
- /* LHS==pointer!=void* and RHS==built-in non integral */\
+ /* LHS==pointer!=void* and RHS==fundamental non integral */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::type_traits::ice_not< ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value >::value,\
- ::boost::type_traits::ice_not< ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value >::value,\
- ::boost::type_traits::ice_not< ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value >::value,\
- ::boost::type_traits::ice_not< ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value,\
- /* LHS=non pointer and RHS=pointer */\
+ /* LHS=fundamental and RHS=pointer */\
       ::boost::type_traits::ice_and<\
- ::boost::type_traits::ice_not< ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value >::value,\
+ ::boost::is_fundamental< LHS >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value,\
       /* two different pointers */\

Modified: sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -15,17 +15,20 @@
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
       /* RHS==pointer */\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- /* LHS==pointer and (LHS==void* or (RHS==builtin and RHS!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* LHS==pointer and RHS==fundamental and (LHS==void* or RHS!=integral) */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::type_traits::ice_and<\
- ::boost::type_traits::ice_not< ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value >::value,\
- ::boost::type_traits::ice_not< ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value >::value,\
- ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
- >::value\
+ ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value\
>::value

Modified: sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,10 +13,22 @@
 #define BOOST_TT_TRAIT_OP *
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
+ /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -13,10 +13,22 @@
 #define BOOST_TT_TRAIT_OP *=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
+ /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,26 +14,14 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one pointer and one non pointer built-in */\
+ /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::boost::type_traits::ice_and<\

Modified: sandbox/type_traits/boost/type_traits/has_operator_plus.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_plus.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_plus.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -19,37 +19,27 @@
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value,\
- /* built-in non pointer non integral with pointer */\
+ /* pointer with fundamental non integral */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value\
- >::value\
- >::value\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value\
>::value,\
- /* one is void* */\
+ /* void* with fundamental */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value\
+ ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value,\
+ ::boost::is_fundamental< LHS >::value\
>::value\
>::value
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,30 +14,31 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* one is void* */\
+ /* two pointers */\
       ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value,\
+ /* void* with fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
+ ::boost::is_fundamental< RHS >::value\
>::value,\
- /* two pointers */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value,\
+ ::boost::is_fundamental< LHS >::value\
>::value,\
- /* LHS==pointer!=void* and RHS==non integral */\
+ /* LHS==pointer and RHS==fundamental non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::type_traits::ice_not< ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value >::value\
- >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value,\
- /* LHS==non bool and RHS==pointer */\
+ /* LHS==non bool fundamental and RHS==pointer */\
       ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
          ::boost::type_traits::ice_not< ::boost::is_same< bool, typename ::boost::remove_cv< typename ::boost::remove_reference<LHS>::type >::type >::value >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -14,27 +14,28 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
- /* two built-in, one non integer */\
+ /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- /* two builtin */\
- ::boost::type_traits::ice_not<\
- ::boost::type_traits::ice_or<\
- ::boost::is_class< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_class< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_union< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
- >::value\
- >::value,\
- /* one non integer */\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_fundamental< RHS >::value,\
          ::boost::type_traits::ice_or<\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value,\
             ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
>::value\
>::value,\
- /* one pointer */\
+ /* one fundamental, one pointer */\
       ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< LHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ >::value\
+ >::value,\
+ /* two pointers */\
+ ::boost::type_traits::ice_and<\
          ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
          ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
>::value\

Modified: sandbox/type_traits/libs/type_traits/test/has_binary_logical_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_binary_logical_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_binary_logical_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, true);
    TEST_TT(B*, A*, true);
    TEST_TT(B*, B*, true);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_binary_minus_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_binary_minus_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_binary_minus_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, true);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_binary_plus_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_binary_plus_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_binary_plus_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, false);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_comparison_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_comparison_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_comparison_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, true);
    TEST_TT(B*, B*, true);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_integral_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_integral_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_integral_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, false);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_minus_equal_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_minus_equal_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_minus_equal_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, false);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_no_pointer_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_no_pointer_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_no_pointer_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, false);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 

Modified: sandbox/type_traits/libs/type_traits/test/has_plus_equal_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_plus_equal_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_plus_equal_operator_test.hpp 2011-02-05 15:58:01 EST (Sat, 05 Feb 2011)
@@ -59,6 +59,12 @@
 struct A { };
 struct B : public A { };
 
+struct C { };
+struct D { };
+bool operator BOOST_TT_TRAIT_OP (const C&, void*) { return true; }
+bool operator BOOST_TT_TRAIT_OP (void*, const D&) { return true; }
+bool operator BOOST_TT_TRAIT_OP (const C&, const D&) { return true; }
+
 void run() {
    // test with only one template parameter
    TEST_T(bool, true);
@@ -828,6 +834,11 @@
    TEST_TT(B*, double*, false);
    TEST_TT(B*, A*, false);
    TEST_TT(B*, B*, false);
+ TEST_TT(C, void*, true);
+ TEST_TT(D, void*, false);
+ TEST_TT(void*, C, false);
+ TEST_TT(void*, D, true);
+ TEST_TT(C, D, true);
 }
 }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk