Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68570 - in sandbox/type_traits: boost/type_traits boost/type_traits/detail libs/type_traits/test
From: frederic.bron_at_[hidden]
Date: 2011-01-30 08:40:35


Author: bronf
Date: 2011-01-30 08:40:29 EST (Sun, 30 Jan 2011)
New Revision: 68570
URL: http://svn.boost.org/trac/boost/changeset/68570

Log:
added traits to detect the presence of the complement operator
Added:
   sandbox/type_traits/boost/type_traits/has_operator_complement.hpp (contents, props changed)
   sandbox/type_traits/libs/type_traits/test/has_operator_complement_test.cpp (contents, props changed)
   sandbox/type_traits/libs/type_traits/test/has_prefix_complement_operator_test.hpp (contents, props changed)
Text files modified:
   sandbox/type_traits/boost/type_traits/detail/has_prefix_operator.hpp | 1
   sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_and_equal.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_or.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_or_equal.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_bit_xor_equal.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_divides.hpp | 2
   sandbox/type_traits/boost/type_traits/has_operator_divides_equal.hpp | 2
   sandbox/type_traits/boost/type_traits/has_operator_equal_to.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_greater.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_greater_equal.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_left_shift.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_left_shift_equal.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_less.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_less_equal.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_logical_and.hpp | 32 +++++++++++----------
   sandbox/type_traits/boost/type_traits/has_operator_logical_or.hpp | 32 +++++++++++----------
   sandbox/type_traits/boost/type_traits/has_operator_minus.hpp | 60 ++++++++++++++++++++-------------------
   sandbox/type_traits/boost/type_traits/has_operator_minus_equal.hpp | 22 ++++++++------
   sandbox/type_traits/boost/type_traits/has_operator_modulus.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_modulus_equal.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_multiplies.hpp | 2
   sandbox/type_traits/boost/type_traits/has_operator_multiplies_equal.hpp | 2
   sandbox/type_traits/boost/type_traits/has_operator_not_equal_to.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_plus.hpp | 60 ++++++++++++++++++++-------------------
   sandbox/type_traits/boost/type_traits/has_operator_plus_equal.hpp | 52 ++++++++++++++++++----------------
   sandbox/type_traits/boost/type_traits/has_operator_postfix_decrement.hpp | 12 ++++---
   sandbox/type_traits/boost/type_traits/has_operator_postfix_increment.hpp | 8 +++--
   sandbox/type_traits/boost/type_traits/has_operator_prefix_decrement.hpp | 12 ++++---
   sandbox/type_traits/boost/type_traits/has_operator_prefix_increment.hpp | 8 +++--
   sandbox/type_traits/boost/type_traits/has_operator_right_shift.hpp | 42 ++++++++++++++-------------
   sandbox/type_traits/boost/type_traits/has_operator_right_shift_equal.hpp | 42 ++++++++++++++-------------
   33 files changed, 590 insertions(+), 533 deletions(-)

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -6,6 +6,7 @@
 //
 // See http://www.boost.org/libs/type_traits for most recent version including documentation.
 
+#include <limits>
 #include <boost/config.hpp>
 #include <boost/type_traits/detail/yes_no_type.hpp>
 #include <boost/type_traits/integral_constant.hpp>

Modified: sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp
==============================================================================
--- sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp (original)
+++ sandbox/type_traits/boost/type_traits/has_operator_bit_and.hpp 2011-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP &
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP &=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP |
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP |=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP ^
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP ^=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
         )
 
 

Added: sandbox/type_traits/boost/type_traits/has_operator_complement.hpp
==============================================================================
--- (empty file)
+++ sandbox/type_traits/boost/type_traits/has_operator_complement.hpp 2011-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -0,0 +1,38 @@
+// (C) Copyright 2009-2011 Frédéric Bron (frederic.bron_at_[hidden])
+//
+// 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_complement_HPP_INCLUDED
+#define BOOST_TT_complement_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_operator_complement
+#define BOOST_TT_TRAIT_OP ~
+#define BOOST_TT_DEFAULT_RET void
+#define BOOST_TT_FORBIDDEN_IF\
+ (\
+ /* pointer */\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ or\
+ /* non integral built-in */\
+ (\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
+ )
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_DEFAULT_RET
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,8 +13,8 @@
 #define BOOST_TT_TRAIT_OP /
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
         (\
+ /* one pointer */\
                 boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
                 boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,8 +13,8 @@
 #define BOOST_TT_TRAIT_OP /=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
         (\
+ /* one pointer */\
                 boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
                 boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP ==
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP >
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP >=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP <<
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP <<=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP <
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP <=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,22 +13,24 @@
 #define BOOST_TT_TRAIT_OP &&
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* pointer with built-in non convertible to bool */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
- boost::is_convertible < typename boost::remove_reference<RHS>::type, bool >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_convertible < typename boost::remove_reference<LHS>::type, bool >::value\
+ /* pointer with built-in non convertible to bool */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_convertible < typename boost::remove_reference<RHS>::type, bool >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_convertible < typename boost::remove_reference<LHS>::type, bool >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,22 +13,24 @@
 #define BOOST_TT_TRAIT_OP ||
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* pointer with built-in non convertible to bool */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
- boost::is_convertible < typename boost::remove_reference<RHS>::type, bool >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_convertible < typename boost::remove_reference<LHS>::type, bool >::value\
+ /* pointer with built-in non convertible to bool */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_convertible < typename boost::remove_reference<RHS>::type, bool >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_convertible < typename boost::remove_reference<LHS>::type, bool >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,39 +13,41 @@
 #define BOOST_TT_TRAIT_OP -
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one is void* */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
- )\
- or\
- /* LHS==pointer!=void* and RHS==built-in non integral */\
         (\
+ /* one is void* */\
                 (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- not boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- ) and (\
- not boost::is_class < typename boost::remove_reference<RHS>::type >::value and\
- not boost::is_union < typename boost::remove_reference<RHS>::type >::value and\
- not boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ )\
+ or\
+ /* LHS==pointer!=void* and RHS==built-in non integral */\
+ (\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ not boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ ) and (\
+ not boost::is_class < typename boost::remove_reference<RHS>::type >::value and\
+ not boost::is_union < typename boost::remove_reference<RHS>::type >::value and\
+ not boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
+ )\
+ or\
+ /* LHS=non pointer and RHS=pointer */\
+ (\
+ not boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ or\
+ /* two different pointers */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ 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\
                 )\
- )\
- or\
- /* LHS=non pointer and RHS=pointer */\
- (\
- not boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- or\
- /* two different pointers */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- 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\
         )
 
 

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,18 +13,20 @@
 #define BOOST_TT_TRAIT_OP -=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* RHS==pointer */\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- or\
- /* LHS==pointer and (LHS==void* or (RHS==builtin and RHS!=integral) */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ /* RHS==pointer */\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ or\
+ /* LHS==pointer and (LHS==void* or (RHS==builtin and RHS!=integral) */\
                 (\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- or (\
- not boost::is_class < typename boost::remove_reference<RHS>::type >::value and\
- not boost::is_union < typename boost::remove_reference<RHS>::type >::value and\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ (\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ or (\
+ not boost::is_class < typename boost::remove_reference<RHS>::type >::value and\
+ not boost::is_union < typename boost::remove_reference<RHS>::type >::value and\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                         )\
                 )\
         )

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP %
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP %=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,8 +13,8 @@
 #define BOOST_TT_TRAIT_OP *
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
         (\
+ /* one pointer */\
                 boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
                 boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,8 +13,8 @@
 #define BOOST_TT_TRAIT_OP *=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer */\
         (\
+ /* one pointer */\
                 boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
                 boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,35 +13,37 @@
 #define BOOST_TT_TRAIT_OP !=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one pointer and one non pointer built-in */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ /* one pointer and one non pointer built-in */\
+ (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ )\
                 )\
- )\
- or\
- /* two pointers but no inheritance */\
- (\
+ or\
+ /* two pointers but no inheritance */\
                 (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- ) and not (\
- 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 or\
- 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 or\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ ) and not (\
+ 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 or\
+ 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 or\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value or\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,38 +13,40 @@
 #define BOOST_TT_TRAIT_OP +
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* pointer with pointer */\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- or\
- /* built-in non pointer non integral with pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
- and not (\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
- std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ /* pointer with pointer */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- and not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ /* built-in non pointer non integral with pointer */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value\
+ and not (\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value or\
+ std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ and not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ )\
+ )\
+ or\
+ /* one is void* */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
                 )\
- )\
- or\
- /* one is void* */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,34 +13,36 @@
 #define BOOST_TT_TRAIT_OP +=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* one is void* */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- ) or (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
- )\
- or\
- /* two pointers */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
- )\
- or\
- /* LHS==pointer!=void* and RHS==non integral */\
         (\
+ /* one is void* */\
                 (\
                         boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- not boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
- ) and\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
- )\
- or\
- /* LHS==non bool and RHS==pointer */\
- (\
- not boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<LHS>::type >::type >::value\
- and boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ ) or (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ )\
+ or\
+ /* two pointers */\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ or\
+ /* LHS==pointer!=void* and RHS==non integral */\
+ (\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ not boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ ) and\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
+ or\
+ /* LHS==non bool and RHS==pointer */\
+ (\
+ not boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<LHS>::type >::type >::value\
+ and boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,12 +13,14 @@
 #define BOOST_TT_TRAIT_OP --
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* bool or void* */\
- boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<LHS>::type >::type >::value\
- or\
         (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ /* bool or void* */\
+ boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<LHS>::type >::type >::value\
+ or\
+ (\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,9 +13,11 @@
 #define BOOST_TT_TRAIT_OP ++
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* void* */\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<LHS>::type >::value
+ (\
+ /* void* */\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<LHS>::type >::value\
+ )
 
 
 #include <boost/type_traits/detail/has_postfix_operator.hpp>

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,12 +13,14 @@
 #define BOOST_TT_TRAIT_OP --
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* bool or void* */\
- boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<RHS>::type >::type >::value\
- or\
         (\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ /* bool or void* */\
+ boost::is_same< bool, typename boost::remove_cv< typename boost::remove_reference<RHS>::type >::type >::value\
+ or\
+ (\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,9 +13,11 @@
 #define BOOST_TT_TRAIT_OP ++
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* void* */\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
- boost::is_void< typename boost::remove_pointer<RHS>::type >::value
+ (\
+ /* void* */\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value and\
+ boost::is_void< typename boost::remove_pointer<RHS>::type >::value\
+ )
 
 
 #include <boost/type_traits/detail/has_prefix_operator.hpp>

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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP >>
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::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-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -13,30 +13,32 @@
 #define BOOST_TT_TRAIT_OP >>=
 #define BOOST_TT_DEFAULT_RET void
 #define BOOST_TT_FORBIDDEN_IF\
- /* two built-in, one non integer */\
         (\
- /* two builtin */\
- not (\
- boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ /* two built-in, one non integer */\
+ (\
+ /* two builtin */\
+ not (\
+ boost::is_class < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_class < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_union < typename boost::remove_reference<RHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
+ )\
+ and\
+ (\
+ /* one non integer */\
+ not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
+ or\
+ not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ )\
                 )\
- and\
+ or\
+ /* one pointer */\
                 (\
- /* one non integer */\
- not std::numeric_limits< typename boost::remove_reference<LHS>::type >::is_integer\
- or\
- not std::numeric_limits< typename boost::remove_reference<RHS>::type >::is_integer\
+ boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
+ boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
                 )\
- )\
- or\
- /* one pointer */\
- (\
- boost::is_pointer< typename boost::remove_reference<LHS>::type >::value or\
- boost::is_pointer< typename boost::remove_reference<RHS>::type >::value\
         )
 
 

Added: sandbox/type_traits/libs/type_traits/test/has_operator_complement_test.cpp
==============================================================================
--- (empty file)
+++ sandbox/type_traits/libs/type_traits/test/has_operator_complement_test.cpp 2011-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -0,0 +1,18 @@
+// (C) Copyright 2009-2011 Frédéric Bron (frederic.bron_at_[hidden])
+// 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 "test.hpp"
+#include "check_integral_constant.hpp"
+
+#ifdef TEST_STD
+# include <type_traits>
+#else
+# include <boost/type_traits/has_operator_complement.hpp>
+#endif
+
+#define BOOST_TT_TRAIT_NAME has_operator_complement
+#define BOOST_TT_TRAIT_OP ~
+
+#include "has_prefix_complement_operator_test.hpp"

Added: sandbox/type_traits/libs/type_traits/test/has_prefix_complement_operator_test.hpp
==============================================================================
--- (empty file)
+++ sandbox/type_traits/libs/type_traits/test/has_prefix_complement_operator_test.hpp 2011-01-30 08:40:29 EST (Sun, 30 Jan 2011)
@@ -0,0 +1,152 @@
+// (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
+#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
+#define TEST_TR(TYPE,RET,RESULT) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::BOOST_TT_TRAIT_NAME<TYPE,RET>::value), RESULT)
+
+namespace {
+
+struct ret { };
+
+struct without { };
+
+struct internal { ret operator BOOST_TT_TRAIT_OP () const; };
+
+struct external { };
+ret operator BOOST_TT_TRAIT_OP (const external&);
+
+class internal_private { ret operator BOOST_TT_TRAIT_OP () const; };
+
+struct returns_int { int operator BOOST_TT_TRAIT_OP (); };
+
+struct returns_void { void operator BOOST_TT_TRAIT_OP (); };
+
+struct returns_void_star { void *operator BOOST_TT_TRAIT_OP (); };
+
+struct returns_double { double operator BOOST_TT_TRAIT_OP (); };
+
+struct returns_string { std::string operator BOOST_TT_TRAIT_OP (); };
+
+//struct convertible_to_bool { operator bool () const; };
+//struct returns_convertible_to_bool { convertible_to_bool operator BOOST_TT_TRAIT_OP (); };
+
+class Base1 { };
+class Derived1 : public Base1 { };
+
+bool operator BOOST_TT_TRAIT_OP (const Base1&) { return true; }
+
+class Base2 { };
+struct Derived2 : public Base2 {
+ Derived2(int); // to check if it works with a class that is not default constructible
+};
+
+bool operator BOOST_TT_TRAIT_OP (const Derived2&) { return true; }
+
+struct tag { };
+
+void run() {
+ // test with only one template parameter
+ TEST_T(bool, true);
+ TEST_T(char, true);
+ TEST_T(signed char, true);
+ TEST_T(short int, true);
+ TEST_T(int, true);
+ TEST_T(long int, true);
+ TEST_T(unsigned char, true);
+ TEST_T(unsigned short int, true);
+ TEST_T(unsigned int, true);
+ TEST_T(unsigned long int, true);
+ TEST_T(wchar_t, true);
+ TEST_T(float, false);
+ TEST_T(double, false);
+ TEST_T(long double, false);
+ TEST_T(void, false);
+
+// test with three template parameters
+ TEST_TR(bool, bool, true);
+ TEST_TR(char, bool, true);
+ TEST_TR(signed char, bool, true);
+ TEST_TR(short int, bool, true);
+ TEST_TR(int, bool, true);
+ TEST_TR(long int, bool, true);
+ TEST_TR(unsigned char, bool, true);
+ TEST_TR(unsigned short int, bool, true);
+ TEST_TR(unsigned int, bool, true);
+ TEST_TR(unsigned long int, bool, true);
+ TEST_TR(wchar_t, bool, true);
+ TEST_TR(float, bool, false);
+ TEST_TR(double, bool, false);
+ TEST_TR(long double, bool, false);
+ TEST_TR(bool, tag, false);
+ TEST_TR(char, tag, false);
+ TEST_TR(signed char, tag, false);
+ TEST_TR(short int, tag, false);
+ TEST_TR(int, tag, false);
+ TEST_TR(long int, tag, false);
+ TEST_TR(unsigned char, tag, false);
+ TEST_TR(unsigned short int, tag, false);
+ TEST_TR(unsigned int, tag, false);
+ TEST_TR(unsigned long int, tag, false);
+ TEST_TR(wchar_t, tag, false);
+ TEST_TR(float, tag, false);
+ TEST_TR(double, tag, false);
+ TEST_TR(long double, tag, false);
+
+ TEST_T(without, false);
+ TEST_T(internal, true);
+ TEST_T(external, true);
+// 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(Base1, true);
+ TEST_T(Derived1, true);
+ TEST_T(Base2, false);
+ TEST_T(Derived2, true);
+
+ TEST_TR(without, bool, false);
+ TEST_TR(internal, bool, false);
+ TEST_TR(internal, ret, true);
+ TEST_TR(external, bool, false);
+ TEST_TR(external, ret, true);
+ TEST_TR(returns_int, bool, true);
+ TEST_TR(returns_int, int, true);
+ TEST_TR(returns_void, void, true);
+ TEST_TR(returns_void, bool, false);
+ TEST_TR(returns_void_star, bool, true);
+ TEST_TR(returns_double, bool, true);
+ 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(Base1, bool, true);
+ TEST_TR(Derived1, bool, true);
+ TEST_TR(Base2, bool, false);
+ TEST_TR(Derived2, bool, true);
+ // pointers
+ TEST_T(void*, false);
+ TEST_T(bool*, false);
+ TEST_T(char*, false);
+ TEST_T(int*, false);
+ TEST_T(long*, false);
+ TEST_T(wchar_t*, false);
+ TEST_T(double*, false);
+ TEST_T(without*, false);
+}
+}
+
+TT_TEST_BEGIN(BOOST_TT_TRAIT_NAME)
+ run();
+TT_TEST_END


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