$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: steven_at_[hidden]
Date: 2007-10-12 13:24:57
Author: steven_watanabe
Date: 2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
New Revision: 39965
URL: http://svn.boost.org/trac/boost/changeset/39965
Log:
Rearranged SFINAE.  Hopefully this will help cw...
Text files modified: 
   sandbox/units/boost/units/detail/dimensionless_unit.hpp |    43 ++++++++++++++++++++++++++++++++++++--- 
   sandbox/units/boost/units/implicit_conversion.hpp       |     4 --                                      
   sandbox/units/boost/units/scaled_base_unit.hpp          |     7 -----                                   
   sandbox/units/boost/units/unit.hpp                      |     2                                         
   sandbox/units/boost/units/units_fwd.hpp                 |     2                                         
   5 files changed, 43 insertions(+), 15 deletions(-)
Modified: sandbox/units/boost/units/detail/dimensionless_unit.hpp
==============================================================================
--- sandbox/units/boost/units/detail/dimensionless_unit.hpp	(original)
+++ sandbox/units/boost/units/detail/dimensionless_unit.hpp	2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
@@ -14,11 +14,19 @@
 #include <boost/utility/enable_if.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/units/units_fwd.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/homogeneous_system.hpp>
 
 namespace boost {
 namespace units {
+
+template<class T>
+struct heterogeneous_system;
+
+template<class T>
+struct homogeneous_system;
+
+template<class T1, class T2>
+struct heterogeneous_system_pair;
+
 namespace detail {
 
 template<class T>
@@ -37,10 +45,37 @@
    >
 > : boost::mpl::true_ {};
 
+#ifdef BOOST_MSVC
+
 #define BOOST_UNITS_DIMENSIONLESS_UNIT(T)\
-    boost::units::unit<typename boost::enable_if<boost::units::detail::is_dimensionless_system<T>, boost::units::dimensionless_type>::type, T>
+    boost::units::unit<\
+        typename boost::enable_if<boost::units::detail::is_dimensionless_system<T>, boost::units::dimensionless_type>::type,\
+        T\
+    >
+
+#define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T)\
+    boost::units::unit<\
+        typename boost::disable_if<boost::units::detail::is_dimensionless_system<T>, boost::units::dimensionless_type>::type,\
+        T\
+    >
+
+#else
 
-#define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T) boost::units::unit<typename boost::disable_if<boost::units::detail::is_dimensionless_system<T>, boost::units::dimensionless_type>::type, T>
+#define BOOST_UNITS_DIMENSIONLESS_UNIT(T)\
+    boost::units::unit<\
+        boost::units::dimensionless_type,\
+        T,\
+        typename boost::enable_if<boost::units::detail::is_dimensionless_system<T> >::type\
+    >
+
+#define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T)\
+    boost::units::unit<\
+        boost::units::dimensionless_type,\
+        T,\
+        typename boost::disable_if<boost::units::detail::is_dimensionless_system<T> >::type\
+    >
+
+#endif
 
 }
 }
Modified: sandbox/units/boost/units/implicit_conversion.hpp
==============================================================================
--- sandbox/units/boost/units/implicit_conversion.hpp	(original)
+++ sandbox/units/boost/units/implicit_conversion.hpp	2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
@@ -18,15 +18,13 @@
 #include <boost/mpl/bool.hpp>
 
 #include <boost/units/operators.hpp>
-
 #include <boost/units/heterogeneous_system.hpp>
+#include <boost/units/units_fwd.hpp>
 
 namespace boost {
 
 namespace units {
 
-template<class Dim,class System> class unit;
-
 namespace detail {
 
 template<int N>
Modified: sandbox/units/boost/units/scaled_base_unit.hpp
==============================================================================
--- sandbox/units/boost/units/scaled_base_unit.hpp	(original)
+++ sandbox/units/boost/units/scaled_base_unit.hpp	2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
@@ -27,6 +27,7 @@
 #include <boost/units/config.hpp>
 #include <boost/units/dimension.hpp>
 #include <boost/units/static_rational.hpp>
+#include <boost/units/units_fwd.hpp>
 #include <boost/units/detail/one.hpp>
 #include <boost/units/detail/static_rational_power.hpp>
 
@@ -34,9 +35,6 @@
 
 namespace units {
 
-template<class Dimensions, class System>
-class unit;
-
 template<class T>
 struct heterogeneous_system;
 
@@ -193,9 +191,6 @@
     typedef typename unscale<S>::type type;
 };
 
-template<class D, class S>
-class unit;
-
 /// INTERNAL ONLY
 template<class D, class S>
 struct unscale<unit<D, S> >
Modified: sandbox/units/boost/units/unit.hpp
==============================================================================
--- sandbox/units/boost/units/unit.hpp	(original)
+++ sandbox/units/boost/units/unit.hpp	2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
@@ -31,7 +31,7 @@
 /// class representing a model-dependent unit with no associated value
 
 /// (e.g. meters, Kelvin, feet, etc...)
-template<class Dim,class System>
+template<class Dim,class System, class Enable>
 class unit
 {
     public:
Modified: sandbox/units/boost/units/units_fwd.hpp
==============================================================================
--- sandbox/units/boost/units/units_fwd.hpp	(original)
+++ sandbox/units/boost/units/units_fwd.hpp	2007-10-12 13:24:56 EDT (Fri, 12 Oct 2007)
@@ -32,7 +32,7 @@
 template<class T> struct get_dimension;
 template<class T> struct get_system;
 
-template<class Dim,class System> class unit;
+template<class Dim,class System, class Enable=void> class unit;
 template<class Y> class absolute;
 
 template<class BaseUnitTag> struct base_unit_info;