Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68684 - in sandbox/type_traits: boost/type_traits boost/type_traits/detail libs/type_traits/test
From: frederic.bron_at_[hidden]
Date: 2011-02-06 17:58:04


Author: bronf
Date: 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
New Revision: 68684
URL: http://svn.boost.org/trac/boost/changeset/68684

Log:
operator traits: handling correctly cv qualifiers and references
Text files modified:
   sandbox/type_traits/boost/type_traits/detail/has_binary_operator.hpp | 12
   sandbox/type_traits/boost/type_traits/detail/has_postfix_operator.hpp | 11
   sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp | 11
   sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_complement.hpp | 6
   sandbox/type_traits/boost/type_traits/has_operator_divides.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_greater.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_less.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_minus.hpp | 34 +-
   sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp | 14
   sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp | 12
   sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_plus.hpp | 28 +-
   sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp | 28 +-
   sandbox/type_traits/boost/type_traits/has_operator_postfix_decrement.hpp | 14
   sandbox/type_traits/boost/type_traits/has_operator_postfix_increment.hpp | 14
   sandbox/type_traits/boost/type_traits/has_operator_prefix_decrement.hpp | 14
   sandbox/type_traits/boost/type_traits/has_operator_prefix_increment.hpp | 14
   sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp | 20
   sandbox/type_traits/boost/type_traits/has_operator_unary_minus.hpp | 2
   sandbox/type_traits/libs/type_traits/test/has_binary_logical_operator_test.hpp | 486 ++++++++++++++++++++++++++++++++++++++-
   sandbox/type_traits/libs/type_traits/test/has_postfix_decrement_operator_test.hpp | 24 +
   sandbox/type_traits/libs/type_traits/test/has_postfix_increment_operator_test.hpp | 24 +
   sandbox/type_traits/libs/type_traits/test/has_prefix_decrement_operator_test.hpp | 24 +
   sandbox/type_traits/libs/type_traits/test/has_prefix_increment_operator_test.hpp | 24 +
   42 files changed, 903 insertions(+), 313 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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -45,7 +45,7 @@
 
 namespace {
    template <typename T>
- typename ::boost::remove_cv<T>::type &make();
+ T &make();
 }
 
 template < typename LHS, typename RHS >
@@ -96,7 +96,7 @@
 // do not check for return type if 3rd template parameter RET is void
 template < typename LHS, typename RHS >
 struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1)< LHS, RHS, void, false > {
- static ::boost::type_traits::yes_type check(int); // this version is preferred for types convertible to RET
+ static ::boost::type_traits::yes_type check(int); // this version is preferred when operator exists
    static ::boost::type_traits::no_type check(tag); // this version is used otherwise
 
    BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<LHS>() BOOST_TT_TRAIT_OP make<RHS>()),0)))==sizeof(::boost::type_traits::yes_type)));
@@ -133,7 +133,13 @@
 };
 
 template < typename LHS, typename RHS, typename RET >
-struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) : public BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < LHS, RHS, RET, BOOST_TT_FORBIDDEN_IF > { };
+struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+ typedef typename ::boost::remove_reference<LHS>::type lhs_noref;
+ typedef typename ::boost::remove_reference<RHS>::type rhs_noref;
+ typedef typename ::boost::remove_cv<lhs_noref>::type lhs_nocv;
+ typedef typename ::boost::remove_cv<rhs_noref>::type rhs_nocv;
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < lhs_noref, rhs_noref, RET, BOOST_TT_FORBIDDEN_IF >::value));
+};
 
 } // namespace impl
 } // namespace detail

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-06 17:58:00 EST (Sun, 06 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_const.hpp>
 #include <boost/type_traits/is_fundamental.hpp>
 #include <boost/type_traits/is_pointer.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -40,7 +41,7 @@
 
 namespace {
    template <typename T>
- typename ::boost::remove_cv<T>::type &make();
+ T &make();
 }
 
 template < typename LHS >
@@ -91,7 +92,7 @@
 // do not check for return type if 2nd template parameter RET is void
 template < typename LHS >
 struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1)< LHS, void, false > {
- static ::boost::type_traits::yes_type check(int); // this version is preferred for types convertible to RET
+ static ::boost::type_traits::yes_type check(int); // this version is preferred when operator exists
    static ::boost::type_traits::no_type check(tag); // this version is used otherwise
 
    BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<LHS>() BOOST_TT_TRAIT_OP),0)))==sizeof(::boost::type_traits::yes_type)));
@@ -108,7 +109,11 @@
 };
 
 template < typename LHS, typename RET >
-struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) : public BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < LHS, RET, BOOST_TT_FORBIDDEN_IF > { };
+struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+ typedef typename ::boost::remove_reference<LHS>::type lhs_noref;
+ typedef typename ::boost::remove_cv<lhs_noref>::type lhs_nocv;
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < lhs_noref, RET, BOOST_TT_FORBIDDEN_IF >::value));
+};
 
 } // namespace impl
 } // namespace detail

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-06 17:58:00 EST (Sun, 06 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_const.hpp>
 #include <boost/type_traits/is_fundamental.hpp>
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_pointer.hpp>
@@ -43,7 +44,7 @@
 
 namespace {
    template <typename T>
- typename ::boost::remove_cv<T>::type &make();
+ T &make();
 }
 
 template < typename RHS >
@@ -94,7 +95,7 @@
 // do not check for return type if 2nd template parameter RET is void
 template < typename RHS >
 struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1)< RHS, void, false > {
- static ::boost::type_traits::yes_type check(int); // this version is preferred for types convertible to RET
+ static ::boost::type_traits::yes_type check(int); // this version is preferred when operator exists
    static ::boost::type_traits::no_type check(tag); // this version is used otherwise
 
    BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((BOOST_TT_TRAIT_OP make<RHS>()),0)))==sizeof(::boost::type_traits::yes_type)));
@@ -111,7 +112,11 @@
 };
 
 template < typename RHS, typename RET >
-struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) : public BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < RHS, RET, BOOST_TT_FORBIDDEN_IF > { };
+struct BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+ typedef typename ::boost::remove_reference<RHS>::type rhs_noref;
+ typedef typename ::boost::remove_cv<rhs_noref>::type rhs_nocv;
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl1) < rhs_noref, RET, BOOST_TT_FORBIDDEN_IF >::value));
+};
 
 } // namespace impl
 } // namespace detail

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -15,11 +15,11 @@
 #define BOOST_TT_FORBIDDEN_IF\
    ::boost::type_traits::ice_or<\
       /* pointer */\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
       /* fundamental non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
+ ::boost::is_fundamental< rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_pointer< lhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_pointer< lhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* 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::is_pointer< lhs_noref >::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\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< rhs_nocv, bool >::value >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< lhs_nocv, 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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* 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::is_pointer< lhs_noref >::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\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< rhs_nocv, bool >::value >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< lhs_nocv, 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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,38 +16,38 @@
    ::boost::type_traits::ice_or<\
       /* 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_pointer< lhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::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_pointer< rhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::value\
>::value\
>::value,\
       /* 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::is_fundamental< RHS >::value,\
- ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value,\
       /* LHS=fundamental and RHS=pointer */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
       /* two different 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::type_traits::ice_not< ::boost::is_same< typename ::boost::remove_cv< typename ::boost::remove_reference<LHS>::type >::type, typename ::boost::remove_cv< typename ::boost::remove_reference<RHS>::type >::type >::value >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< lhs_nocv, rhs_nocv >::value >::value\
>::value\
>::value
 

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,19 +16,19 @@
    ::boost::type_traits::ice_or<\
       /* RHS==pointer */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_pointer< lhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,17 +16,17 @@
    /* pointer with pointer or fundamental */\
    ::boost::type_traits::ice_or<\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
+ ::boost::is_pointer< lhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_or<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,23 +16,23 @@
    ::boost::type_traits::ice_or<\
       /* pointer and fundamental */\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value,\
- ::boost::is_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* two pointers but no inheritance */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value,\
          ::boost::type_traits::ice_not<\
             ::boost::type_traits::ice_or<\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type >::value,\
- ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer<RHS>::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer<LHS>::type >::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<LHS>::type >::value,\
- ::boost::is_void< typename ::boost::remove_pointer<RHS>::type >::value\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type >::value,\
+ ::boost::is_base_of< typename ::boost::remove_reference< typename ::boost::remove_pointer< rhs_noref >::type >::type, typename ::boost::remove_reference< typename ::boost::remove_pointer< lhs_noref >::type >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
>::value\
>::value\
>::value\

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,30 +16,30 @@
    ::boost::type_traits::ice_or<\
       /* pointer with pointer */\
       ::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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
       /* pointer with fundamental non 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_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value,\
       ::boost::type_traits::ice_and<\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value,\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::type_traits::ice_not< ::boost::is_integral< typename ::boost::remove_reference<LHS>::type >::value >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value\
>::value,\
       /* 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_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value,\
+ ::boost::is_fundamental< lhs_nocv >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,31 +16,31 @@
    ::boost::type_traits::ice_or<\
       /* 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< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
       /* 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_fundamental< RHS >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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_fundamental< LHS >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value\
>::value,\
       /* LHS==pointer and RHS==fundamental non 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_not< ::boost::is_integral< typename ::boost::remove_reference<RHS>::type >::value >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< bool, lhs_nocv >::value >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_postfix_decrement.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_postfix_decrement.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_postfix_decrement.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -13,13 +13,17 @@
 #define BOOST_TT_TRAIT_OP --
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* bool or void* */\
+ /* bool or void* or const fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_same< bool, typename ::boost::remove_cv< typename ::boost::remove_reference<LHS>::type >::type >::value,\
+ ::boost::is_same< bool, lhs_nocv >::value,\
       ::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\
- >::value\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_const< lhs_noref >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_postfix_increment.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_postfix_increment.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_postfix_increment.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -13,10 +13,16 @@
 #define BOOST_TT_TRAIT_OP ++
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* void* */\
- ::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\
+ /* void* or const fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< lhs_noref >::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_const< lhs_noref >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_prefix_decrement.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_prefix_decrement.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_prefix_decrement.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -13,13 +13,17 @@
 #define BOOST_TT_TRAIT_OP --
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* bool or void* */\
+ /* bool or void* or const fundamental */\
    ::boost::type_traits::ice_or<\
- ::boost::is_same< bool, typename ::boost::remove_cv< typename ::boost::remove_reference<RHS>::type >::type >::value,\
+ ::boost::is_same< bool, rhs_nocv >::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\
- >::value\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_const< rhs_noref >::value\
+ >::value\
>::value
 
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_prefix_increment.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_prefix_increment.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_prefix_increment.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -13,10 +13,16 @@
 #define BOOST_TT_TRAIT_OP ++
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* void* */\
- ::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\
+ /* void* or const fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< rhs_noref >::value,\
+ ::boost::is_void< typename ::boost::remove_pointer< rhs_noref >::type >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_const< rhs_noref >::value\
+ >::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -16,28 +16,28 @@
    ::boost::type_traits::ice_or<\
       /* two fundamental, one non integral */\
       ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< LHS >::value,\
- ::boost::is_fundamental< RHS >::value,\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_fundamental< rhs_nocv >::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\
+ ::boost::type_traits::ice_not< ::boost::is_integral< lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< rhs_noref >::value >::value\
>::value\
>::value,\
       /* 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\
+ ::boost::is_fundamental< lhs_nocv >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value,\
          ::boost::type_traits::ice_and<\
- ::boost::is_fundamental< RHS >::value,\
- ::boost::is_pointer< typename ::boost::remove_reference<LHS>::type >::value\
+ ::boost::is_fundamental< rhs_nocv >::value,\
+ ::boost::is_pointer< lhs_noref >::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\
+ ::boost::is_pointer< lhs_noref >::value,\
+ ::boost::is_pointer< rhs_noref >::value\
>::value\
>::value
 

Modified: sandbox/type_traits/boost/type_traits/has_operator_unary_minus.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_unary_minus.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_unary_minus.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -14,7 +14,7 @@
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
    /* pointer */\
- ::boost::is_pointer< typename ::boost::remove_reference<RHS>::type >::value
+ ::boost::is_pointer< rhs_noref >::value
 
 
 #include <boost/type_traits/detail/has_prefix_operator.hpp>

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-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -1,19 +1,19 @@
-// (C) Copyright Frederic Bron 2009-2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ // (C) Copyright Frederic Bron 2009-2010.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <iostream>
 #include <typeinfo>
 #include <string>
 
-// test with one template parameter
+ // test with one template parameter
 #define TEST_T(TYPE,RESULT) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::BOOST_TT_TRAIT_NAME<TYPE>::value), RESULT)
-// test with one template parameter plus return value
+ // test with one template parameter plus return value
 #define TEST_TR(TYPE,RET,RESULT) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::BOOST_TT_TRAIT_NAME<TYPE,TYPE,RET>::value), RESULT)
-// test with two template parameters
+ // test with two template parameters
 #define TEST_TT(TYPE1,TYPE2,RESULT) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::BOOST_TT_TRAIT_NAME<TYPE1,TYPE2>::value), RESULT)
-// test with two template parameters plus return value
+ // test with two template parameters plus return value
 #define TEST_TTR(TYPE1,TYPE2,RET,RESULT) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::BOOST_TT_TRAIT_NAME<TYPE1,TYPE2,RET>::value), RESULT)
 
 namespace {
@@ -39,8 +39,8 @@
 
 struct returns_string { std::string operator BOOST_TT_TRAIT_OP (const returns_string&); };
 
-//struct convertible_to_bool { operator bool () const; };
-//struct returns_convertible_to_bool { convertible_to_bool operator BOOST_TT_TRAIT_OP (const returns_convertible_to_bool&); };
+ //struct convertible_to_bool { operator bool () const; };
+ //struct returns_convertible_to_bool { convertible_to_bool operator BOOST_TT_TRAIT_OP (const returns_convertible_to_bool&); };
 
 class Base1 { };
 class Derived1 : public Base1 { };
@@ -82,6 +82,31 @@
    TEST_T(double, true);
    TEST_T(long double, true);
    TEST_T(void, false);
+# define CV(T) const T
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) volatile T
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const T&
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) volatile T&
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T&
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+
    // test with only two template parameters
    TEST_TT(bool, bool, true);
    TEST_TT(bool, char, true);
@@ -702,17 +727,450 @@
    TEST_TTR(long double, double, tag, false);
    TEST_TTR(long double, long double, tag, false);
 
+# define CV1(T) const T
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) volatile T
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const volatile T
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const T&
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) volatile T&
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const volatile T&
+# define CV2(T) T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) const T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) volatile T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) const volatile T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) const T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) volatile T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) T
+# define CV2(T) const volatile T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const T
+# define CV2(T) const T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const T&
+# define CV2(T) const T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) volatile T
+# define CV2(T) volatile T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) volatile T&
+# define CV2(T) volatile T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const volatile T
+# define CV2(T) const volatile T
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+# define CV1(T) const volatile T&
+# define CV2(T) const volatile T&
+ // test with only two template parameters
+ TEST_TT(CV1(bool), CV2(int), true);
+ TEST_TT(CV1(bool), CV2(double), true);
+ TEST_TT(CV1(int), CV2(bool), true);
+ TEST_TT(CV1(int), CV2(double), true);
+ TEST_TT(CV1(double), CV2(bool), true);
+ TEST_TT(CV1(double), CV2(int), true);
+
+ // test with three template parameters
+ TEST_TTR(CV1(bool), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(double), bool, true);
+ TEST_TTR(CV1(int), CV2(bool), bool, true);
+ TEST_TTR(CV1(int), CV2(double), bool, true);
+ TEST_TTR(CV1(double), CV2(bool), bool, true);
+ TEST_TTR(CV1(double), CV2(int), bool, true);
+ TEST_TTR(CV1(bool), CV2(int), tag, false);
+ TEST_TTR(CV1(bool), CV2(double), tag, false);
+ TEST_TTR(CV1(int), CV2(bool), tag, false);
+ TEST_TTR(CV1(int), CV2(double), tag, false);
+ TEST_TTR(CV1(double), CV2(bool), tag, false);
+ TEST_TTR(CV1(double), CV2(int), tag, false);
+
+
    TEST_T(without, false);
    TEST_T(internal, true);
    TEST_T(external, true);
-// compile time error
-// TEST_T(internal_private, false);
+ // compile time error
+ // TEST_T(internal_private, false);
    TEST_T(returns_int, true);
    TEST_T(returns_void, true);
    TEST_T(returns_void_star, true);
    TEST_T(returns_double, true);
    TEST_T(returns_string, true);
-// TEST_T(convertible_to_bool, true);
+ // TEST_T(convertible_to_bool, true);
    TEST_T(Base1, true);
    TEST_T(Derived1, true);
    TEST_T(Base2, false);
@@ -732,7 +1190,7 @@
    TEST_TR(returns_double, double, true);
    TEST_TR(returns_string, bool, false);
    TEST_TR(returns_string, std::string, true);
-// TEST_TR(convertible_to_bool, bool, true);
+ // TEST_TR(convertible_to_bool, bool, true);
    TEST_TR(Base1, bool, true);
    TEST_TR(Derived1, bool, true);
    TEST_TR(Base2, bool, false);

Modified: sandbox/type_traits/libs/type_traits/test/has_postfix_decrement_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_postfix_decrement_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_postfix_decrement_operator_test.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -69,6 +69,30 @@
    TEST_T(double, true);
    TEST_T(long double, true);
    TEST_T(void, false);
+# define CV(T) const T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) const T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
 
 // test with three template parameters
    TEST_TR(bool, bool, false);

Modified: sandbox/type_traits/libs/type_traits/test/has_postfix_increment_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_postfix_increment_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_postfix_increment_operator_test.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -69,6 +69,30 @@
    TEST_T(double, true);
    TEST_T(long double, true);
    TEST_T(void, false);
+# define CV(T) const T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) const T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T&
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
 
 // test with three template parameters
    TEST_TR(bool, bool, true);

Modified: sandbox/type_traits/libs/type_traits/test/has_prefix_decrement_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_prefix_decrement_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_prefix_decrement_operator_test.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -69,6 +69,30 @@
    TEST_T(double, true);
    TEST_T(long double, true);
    TEST_T(void, false);
+# define CV(T) const T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) const T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
 
 // test with three template parameters
    TEST_TR(bool, bool, false);

Modified: sandbox/type_traits/libs/type_traits/test/has_prefix_increment_operator_test.hpp
==============================================================================
--- sandbox/type_traits/libs/type_traits/test/has_prefix_increment_operator_test.hpp (original)
+++ sandbox/type_traits/libs/type_traits/test/has_prefix_increment_operator_test.hpp 2011-02-06 17:58:00 EST (Sun, 06 Feb 2011)
@@ -69,6 +69,30 @@
    TEST_T(double, true);
    TEST_T(long double, true);
    TEST_T(void, false);
+# define CV(T) const T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) const T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
+# define CV(T) volatile T&
+ TEST_T(CV(bool), true);
+ TEST_T(CV(int), true);
+ TEST_T(CV(double), true);
+# define CV(T) const volatile T&
+ TEST_T(CV(bool), false);
+ TEST_T(CV(int), false);
+ TEST_T(CV(double), false);
 
 // test with three template parameters
    TEST_TR(bool, bool, 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