$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: eric_at_[hidden]
Date: 2008-04-16 01:50:45
Author: eric_niebler
Date: 2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
New Revision: 44451
URL: http://svn.boost.org/trac/boost/changeset/44451
Log:
Merged revisions 44427,44431-44439,44441-44446,44448-44450 via svnmerge from 
https://svn.boost.org/svn/boost/trunk
........
  r44427 | schoepflin | 2008-04-15 00:58:48 -0700 (Tue, 15 Apr 2008) | 1 line
  
  The thread start routine needs C linkage. This fixes a compilation error on Tru64/cxx.
........
  r44431 | johnmaddock | 2008-04-15 09:32:28 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Fix IBM AIX compiler errors.
........
  r44432 | johnmaddock | 2008-04-15 09:36:21 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Attempt fix for Intel on Darwin failures.
........
  r44433 | johnmaddock | 2008-04-15 10:10:18 -0700 (Tue, 15 Apr 2008) | 2 lines
  
  Fix error rates on Mac OS X.
  Fix long double support for pow_test.cpp.
........
  r44434 | johnmaddock | 2008-04-15 10:30:03 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Add some explicit casts from the FP_* macros to type int, so that comparisons actually work when building with GCC, this is GCC bug report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20589.
........
  r44435 | johnmaddock | 2008-04-15 10:35:07 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Try and fix one remaining zeta test failure.
........
  r44436 | jurko | 2008-04-15 10:44:31 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Minor stylistic comment changes.
........
  r44437 | johnmaddock | 2008-04-15 10:50:11 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Add explicit type cast to fix GCC-C++0X mode error.
........
  r44438 | emildotchevski | 2008-04-15 11:24:46 -0700 (Tue, 15 Apr 2008) | 1 line
  
  N2179 compliance (pending documentation update)
........
  r44439 | emildotchevski | 2008-04-15 11:47:16 -0700 (Tue, 15 Apr 2008) | 1 line
  
  introduced boost/exception_ptr.hpp, using Boost Exception
........
  r44441 | pdimov | 2008-04-15 12:02:13 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Disabled sync use for hppa.
........
  r44442 | emildotchevski | 2008-04-15 14:13:24 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Boost Exception header compilation tests added.
........
  r44443 | emildotchevski | 2008-04-15 14:14:23 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Boost Exception documentation source
........
  r44444 | emildotchevski | 2008-04-15 14:56:34 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Boost Exception documentation update
........
  r44445 | emildotchevski | 2008-04-15 15:23:19 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Boost Exception documentation fix
........
  r44446 | emildotchevski | 2008-04-15 15:25:11 -0700 (Tue, 15 Apr 2008) | 2 lines
  
  Boost Exception documentation fix
........
  r44448 | fmhess | 2008-04-15 17:06:29 -0700 (Tue, 15 Apr 2008) | 5 lines
  
  Avoid needless overhead of wrapping owner's deleter in deleter_wrapper if 
  shared_from_this has not been called yet, as Peter suggested
  earlier.
........
  r44449 | djowel | 2008-04-15 20:07:06 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Andreas patch
........
  r44450 | djowel | 2008-04-15 20:07:11 -0700 (Tue, 15 Apr 2008) | 1 line
  
  Andreas indexing suite patch
........
Added:
   branches/proto/v4/boost/exception/enable_current_exception.hpp
      - copied unchanged from r44450, /trunk/boost/exception/enable_current_exception.hpp
   branches/proto/v4/boost/exception_ptr.hpp
      - copied unchanged from r44450, /trunk/boost/exception_ptr.hpp
   branches/proto/v4/libs/exception/doc/adding_data_at_throw.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/adding_data_at_throw.html
   branches/proto/v4/libs/exception/doc/adding_data_later.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/adding_data_later.html
   branches/proto/v4/libs/exception/doc/cloning_and_rethrowing.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/cloning_and_rethrowing.html
   branches/proto/v4/libs/exception/doc/copy_exception.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/copy_exception.html
   branches/proto/v4/libs/exception/doc/current_exception.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/current_exception.html
   branches/proto/v4/libs/exception/doc/enable_current_exception.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/enable_current_exception.html
   branches/proto/v4/libs/exception/doc/grouping_data.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/grouping_data.html
   branches/proto/v4/libs/exception/doc/source/
      - copied from r44450, /trunk/libs/exception/doc/source/
   branches/proto/v4/libs/exception/doc/source/boost-exception.reno
      - copied unchanged from r44450, /trunk/libs/exception/doc/source/boost-exception.reno
   branches/proto/v4/libs/exception/doc/source/html_prefix.txt
      - copied unchanged from r44450, /trunk/libs/exception/doc/source/html_prefix.txt
   branches/proto/v4/libs/exception/doc/source/html_suffix.txt
      - copied unchanged from r44450, /trunk/libs/exception/doc/source/html_suffix.txt
   branches/proto/v4/libs/exception/doc/using_enable_cloning.html
      - copied unchanged from r44450, /trunk/libs/exception/doc/using_enable_cloning.html
   branches/proto/v4/libs/exception/test/copy_exception_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/copy_exception_test.cpp
   branches/proto/v4/libs/exception/test/enable_current_exception_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/enable_current_exception_hpp_test.cpp
   branches/proto/v4/libs/exception/test/enable_error_info_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/enable_error_info_hpp_test.cpp
   branches/proto/v4/libs/exception/test/error_info_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/error_info_hpp_test.cpp
   branches/proto/v4/libs/exception/test/exception_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/exception_hpp_test.cpp
   branches/proto/v4/libs/exception/test/info_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/info_hpp_test.cpp
   branches/proto/v4/libs/exception/test/info_tuple_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/info_tuple_hpp_test.cpp
   branches/proto/v4/libs/exception/test/to_string_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/to_string_hpp_test.cpp
   branches/proto/v4/libs/exception/test/to_string_stub_hpp_test.cpp
      - copied unchanged from r44450, /trunk/libs/exception/test/to_string_stub_hpp_test.cpp
Removed:
   branches/proto/v4/boost/exception/cloning.hpp
   branches/proto/v4/boost/exception/enable_exception_cloning.hpp
Properties modified: 
   branches/proto/v4/   (props changed)
Text files modified: 
   branches/proto/v4/boost/detail/sp_counted_base.hpp                               |     5 --                                      
   branches/proto/v4/boost/enable_shared_from_this.hpp                              |    22 +++++++----                             
   branches/proto/v4/boost/exception.hpp                                            |     2                                         
   branches/proto/v4/boost/math/special_functions/fpclassify.hpp                    |    10 ++--                                    
   branches/proto/v4/boost/math/special_functions/gamma.hpp                         |     6 +-                                      
   branches/proto/v4/boost/python/suite/indexing/container_utils.hpp                |    13 ++++--                                  
   branches/proto/v4/boost/regex/pending/object_cache.hpp                           |     2                                         
   branches/proto/v4/libs/config/test/boost_has_pthreads.ipp                        |     2                                         
   branches/proto/v4/libs/exception/doc/boost-exception.html                        |    74 +++++++++++++++++++++++---------------- 
   branches/proto/v4/libs/exception/doc/cloning.html                                |    24 ++++++------                            
   branches/proto/v4/libs/exception/doc/exception.html                              |     5 +-                                      
   branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html                  |     7 ++-                                     
   branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html |     6 +-                                      
   branches/proto/v4/libs/exception/doc/exception_hpp.html                          |     4 +-                                      
   branches/proto/v4/libs/exception/doc/exception_ptr.html                          |    12 +++--                                   
   branches/proto/v4/libs/exception/doc/name_idx.html                               |     9 ++--                                    
   branches/proto/v4/libs/exception/doc/rethrow_exception.html                      |     2                                         
   branches/proto/v4/libs/exception/doc/throw_exception.html                        |     4 +-                                      
   branches/proto/v4/libs/exception/doc/transporting_data.html                      |     2                                         
   branches/proto/v4/libs/exception/doc/unknown_exception.html                      |     9 ++--                                    
   branches/proto/v4/libs/exception/example/cloning_1.cpp                           |     5 +-                                      
   branches/proto/v4/libs/exception/example/cloning_2.cpp                           |     8 ++--                                    
   branches/proto/v4/libs/exception/test/Jamfile.v2                                 |    11 +++++                                   
   branches/proto/v4/libs/exception/test/cloning_test.cpp                           |     8 ++--                                    
   branches/proto/v4/libs/exception/test/throw_exception_test.cpp                   |    11 +----                                   
   branches/proto/v4/libs/exception/test/unknown_exception_test.cpp                 |    37 +++++++++++++++++--                     
   branches/proto/v4/libs/math/test/Jamfile.v2                                      |     3 +                                       
   branches/proto/v4/libs/math/test/pow_test.cpp                                    |     2 +                                       
   branches/proto/v4/libs/math/test/test_expint.cpp                                 |    38 ++++++++++++++++++++                    
   branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp                         |     7 +++                                     
   branches/proto/v4/libs/math/test/test_zeta.cpp                                   |     8 +++-                                    
   branches/proto/v4/libs/python/test/vector_indexing_suite.py                      |    13 +++++++                                 
   branches/proto/v4/tools/build/v2/tools/common.jam                                |     4 +-                                      
   33 files changed, 247 insertions(+), 128 deletions(-)
Modified: branches/proto/v4/boost/detail/sp_counted_base.hpp
==============================================================================
--- branches/proto/v4/boost/detail/sp_counted_base.hpp	(original)
+++ branches/proto/v4/boost/detail/sp_counted_base.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -46,10 +46,7 @@
 #elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) )
 # include <boost/detail/sp_counted_base_gcc_ppc.hpp>
 
-#elif defined(__GNUC__) && defined( __arm__ )
-# include <boost/detail/sp_counted_base_spin.hpp>
-
-#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
+#elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa )
 # include <boost/detail/sp_counted_base_sync.hpp>
 
 #elif defined(__GNUC__) && ( defined( __sparcv8 ) || defined( __sparcv9 ) )
Modified: branches/proto/v4/boost/enable_shared_from_this.hpp
==============================================================================
--- branches/proto/v4/boost/enable_shared_from_this.hpp	(original)
+++ branches/proto/v4/boost/enable_shared_from_this.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -93,17 +93,21 @@
     template<typename U>
     void _internal_accept_owner(shared_ptr<U> &owner) const
     {
-        init_internal_shared_once();
-
         if( !_owned )
         {
-            detail::sp_deleter_wrapper * pd = get_deleter<detail::sp_deleter_wrapper>(_internal_shared_this);
-            BOOST_ASSERT( pd != 0 );
-            pd->set_deleter(owner);
-
-            owner.reset( _internal_shared_this, owner.get() );
-            _internal_shared_this.reset();
-
+            if( !_internal_shared_this )
+            {
+                T * p = dynamic_cast<T *>(const_cast<enable_shared_from_this*>(this));
+                _internal_weak_this = shared_ptr<T>(owner, p);
+            }else
+            {
+                detail::sp_deleter_wrapper * pd = get_deleter<detail::sp_deleter_wrapper>(_internal_shared_this);
+                BOOST_ASSERT( pd != 0 );
+                pd->set_deleter(owner);
+
+                owner.reset( _internal_shared_this, owner.get() );
+                _internal_shared_this.reset();
+            }
             _owned = true;
         }
     }
Modified: branches/proto/v4/boost/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception.hpp	(original)
+++ branches/proto/v4/boost/exception.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -7,7 +7,7 @@
 #define UUID_1D94A7C6054E11DB9804B622A1EF5492
 
 #include <boost/exception/info_tuple.hpp>
-#include <boost/exception/cloning.hpp>
+#include <boost/exception_ptr.hpp>
 #include <boost/throw_exception.hpp>
 
 #endif
Deleted: branches/proto/v4/boost/exception/cloning.hpp
==============================================================================
--- branches/proto/v4/boost/exception/cloning.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
+++ (empty file)
@@ -1,59 +0,0 @@
-//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under 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)
-
-#ifndef UUID_FA5836A2CADA11DC8CD47C8555D89593
-#define UUID_FA5836A2CADA11DC8CD47C8555D89593
-
-#include <boost/exception/enable_exception_cloning.hpp>
-#include <boost/exception/exception.hpp>
-#include <boost/exception/detail/cloning_base.hpp>
-#include <exception>
-
-namespace
-boost
-    {
-    class
-    unknown_exception:
-        public exception,
-        public std::exception
-        {
-        public:
-
-        explicit
-        unknown_exception()
-            {
-            }
-
-        explicit
-        unknown_exception( boost::exception const & x ):
-            boost::exception(x)
-            {
-            }
-        };
-
-    typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
-
-    template <class T>
-    exception_ptr
-    clone_exception( T const & e )
-        {
-        if( boost::exception_detail::cloning_base const * cb = dynamic_cast<boost::exception_detail::cloning_base const *>(&e) )
-            if( exception_detail::clone_base const * c = cb->clone() )
-                return exception_ptr(c);
-        if( boost::exception const * be = dynamic_cast<boost::exception const *>(&e) )
-            return exception_ptr(exception_detail::make_clone(unknown_exception(*be)));
-        else
-            return exception_ptr(exception_detail::make_clone(unknown_exception()));
-        }
-
-    inline
-    void
-    rethrow_exception( exception_ptr const & p )
-        {
-        p->rethrow();
-        }
-    }
-
-#endif
Deleted: branches/proto/v4/boost/exception/enable_exception_cloning.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_exception_cloning.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
+++ (empty file)
@@ -1,148 +0,0 @@
-//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under 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)
-
-#ifndef UUID_78CC85B2914F11DC8F47B48E55D89593
-#define UUID_78CC85B2914F11DC8F47B48E55D89593
-
-#include <boost/exception/detail/counted_base.hpp>
-#include <boost/exception/detail/cloning_base.hpp>
-#include <boost/detail/atomic_count.hpp>
-#include <boost/assert.hpp>
-#include <new>
-
-namespace
-boost
-    {
-    namespace
-    exception_detail
-        {
-        class
-        clone_base:
-            public counted_base
-            {
-            public:
-
-            virtual void rethrow() const=0;
-            };
-
-        struct
-        bad_alloc_impl:
-            public clone_base,
-            public std::bad_alloc
-            {
-            void
-            add_ref() const
-                {
-                }
-
-            void
-            release() const
-                {
-                }
-
-            void
-            rethrow() const
-                {
-                throw *this;
-                }
-            };
-
-        template <class T>
-        clone_base * make_clone( T const & );
-
-        template <class T>
-        class
-        clone_impl:
-            public T,
-            public cloning_base
-            {
-            public:
-
-            explicit
-            clone_impl( T const & x ):
-                T(x)
-                {
-                }
-
-            private:
-
-            clone_base const *
-            clone() const
-                {
-                return make_clone<T>(*this);
-                }
-            };
-
-        template <class T>
-        class
-        exception_clone:
-            public T,
-            public clone_base
-            {
-            public:
-
-            explicit
-            exception_clone( T const & x ):
-                T(x),
-                count_(0)
-                {
-                }
-
-            private:
-
-            detail::atomic_count mutable count_;
-
-            void
-            add_ref() const
-                {
-                ++count_;
-                }
-
-            void
-            release() const
-                {
-                if( !--count_ )
-                    delete this;
-                }
-
-            void
-            rethrow() const
-                {
-                throw clone_impl<T>(*this);
-                }
-            };
-
-        template <class T>
-        clone_base *
-        make_clone( T const & x )
-            {
-            try
-                {
-                return new exception_clone<T>(x);
-                }
-            catch(
-            std::bad_alloc & )
-                {
-                static bad_alloc_impl bad_alloc;
-                return &bad_alloc;
-                }
-            catch(
-            ... )
-                {
-                BOOST_ASSERT(0);
-                return 0;
-                }
-            }
-        }
-
-    template <class T>
-    exception_detail::clone_impl<T>
-    enable_exception_cloning( T const & x )
-        {
-        return exception_detail::clone_impl<T>(x);
-        }
-    }
-
-#endif
Modified: branches/proto/v4/boost/math/special_functions/fpclassify.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/fpclassify.hpp	(original)
+++ branches/proto/v4/boost/math/special_functions/fpclassify.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -73,7 +73,7 @@
 #ifdef isnan
    return isnan(t);
 #else // BOOST_HAS_FPCLASSIFY
-   return (BOOST_FPCLASSIFY_PREFIX fpclassify(t) == FP_NAN);
+   return (BOOST_FPCLASSIFY_PREFIX fpclassify(t) == (int)FP_NAN);
 #endif
 }
 
@@ -200,19 +200,19 @@
 inline bool isfinite BOOST_NO_MACRO_EXPAND(T z)
 {
    int t = (::boost::math::fpclassify)(z);
-   return (t != FP_NAN) && (t != FP_INFINITE);
+   return (t != (int)FP_NAN) && (t != (int)FP_INFINITE);
 }
 
 template <class T>
 inline bool isinf BOOST_NO_MACRO_EXPAND(T t)
 {
-   return (::boost::math::fpclassify)(t) == FP_INFINITE;
+   return (::boost::math::fpclassify)(t) == (int)FP_INFINITE;
 }
 
 template <class T>
 inline bool isnan BOOST_NO_MACRO_EXPAND(T t)
 {
-   return (::boost::math::fpclassify)(t) == FP_NAN;
+   return (::boost::math::fpclassify)(t) == (int)FP_NAN;
 }
 #ifdef isnan
 template <> inline bool isnan BOOST_NO_MACRO_EXPAND<float>(float t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); }
@@ -232,7 +232,7 @@
 template <class T>
 inline bool isnormal BOOST_NO_MACRO_EXPAND(T t)
 {
-   return (::boost::math::fpclassify)(t) == FP_NORMAL;
+   return (::boost::math::fpclassify)(t) == (int)FP_NORMAL;
 }
 
 } // namespace math
Modified: branches/proto/v4/boost/math/special_functions/gamma.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/gamma.hpp	(original)
+++ branches/proto/v4/boost/math/special_functions/gamma.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -152,7 +152,7 @@
       result = -boost::math::constants::pi<T>() / result;
       if(result == 0)
          return policies::raise_underflow_error<T>(function, "Result of tgamma is too small to represent.", pol);
-      if((boost::math::fpclassify)(result) == FP_SUBNORMAL)
+      if((boost::math::fpclassify)(result) == (int)FP_SUBNORMAL)
          return policies::raise_denorm_error<T>(function, "Result of tgamma is denormalized.", result, pol);
       return result;
    }
@@ -352,7 +352,7 @@
       result = -boost::math::constants::pi<T>() / result;
       if(result == 0)
          return policies::raise_underflow_error<T>(function, "Result of tgamma is too small to represent.", pol);
-      if((boost::math::fpclassify)(result) == FP_SUBNORMAL)
+      if((boost::math::fpclassify)(result) == (int)FP_SUBNORMAL)
          return policies::raise_denorm_error<T>(function, "Result of tgamma is denormalized.", result, pol);
       return result;
    }
@@ -584,7 +584,7 @@
    // This error handling isn't very good: it happens after the fact
    // rather than before it...
    //
-   if((boost::math::fpclassify)(prefix) == FP_INFINITE)
+   if((boost::math::fpclassify)(prefix) == (int)FP_INFINITE)
       policies::raise_overflow_error<T>("boost::math::detail::full_igamma_prefix<%1%>(%1%, %1%)", "Result of incomplete gamma function is too large to represent.", pol);
 
    return prefix;
Modified: branches/proto/v4/boost/python/suite/indexing/container_utils.hpp
==============================================================================
--- branches/proto/v4/boost/python/suite/indexing/container_utils.hpp	(original)
+++ branches/proto/v4/boost/python/suite/indexing/container_utils.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -7,9 +7,12 @@
 #ifndef PY_CONTAINER_UTILS_JDG20038_HPP
 # define PY_CONTAINER_UTILS_JDG20038_HPP
 
+# include <utility>
+# include <boost/foreach.hpp>
 # include <boost/python/object.hpp>
 # include <boost/python/handle.hpp>
 # include <boost/python/extract.hpp>
+# include <boost/python/stl_iterator.hpp>
 
 namespace boost { namespace python { namespace container_utils {
         
@@ -19,11 +22,13 @@
     {
         typedef typename Container::value_type data_type;
         
-        //  l must be a list or some container
-
-        for (int i = 0; i < l.attr("__len__")(); i++)
+        //  l must be iterable
+        BOOST_FOREACH(object elem,
+            std::make_pair(
+              boost::python::stl_input_iterator<object>(l),
+              boost::python::stl_input_iterator<object>()
+              ))
         {
-            object elem(l[i]);
             extract<data_type const&> x(elem);
             //  try if elem is an exact data_type type
             if (x.check())
Modified: branches/proto/v4/boost/regex/pending/object_cache.hpp
==============================================================================
--- branches/proto/v4/boost/regex/pending/object_cache.hpp	(original)
+++ branches/proto/v4/boost/regex/pending/object_cache.hpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -119,7 +119,7 @@
    //
    // Add it to the list, and index it:
    //
-   s_data.cont.push_back(value_type(result, 0));
+   s_data.cont.push_back(value_type(result, static_cast<Key const*>(0)));
    s_data.index.insert(std::make_pair(k, --(s_data.cont.end())));
    s_data.cont.back().second = &(s_data.index.find(k)->first);
    map_size_type s = s_data.index.size();
Modified: branches/proto/v4/libs/config/test/boost_has_pthreads.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_has_pthreads.ipp	(original)
+++ branches/proto/v4/libs/config/test/boost_has_pthreads.ipp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -14,7 +14,7 @@
 
 namespace boost_has_pthreads{
 
-void* thread_proc(void* arg)
+extern "C" void* thread_proc(void* arg)
 {
    return arg;
 }
Modified: branches/proto/v4/libs/exception/doc/boost-exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/boost-exception.html	(original)
+++ branches/proto/v4/libs/exception/doc/boost-exception.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -22,7 +22,7 @@
 <p>The ability to add data to exception objects after they have been passed to <tt>throw</tt> is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. </p>
 <p>Boost Exception also supports <span class="RenoLink">cloning</span> of exception objects, implemented non-intrusively and automatically by the <tt>boost::<span class="RenoLink">throw_exception</span>()</tt> function.</p>
 <h4>Note:</h4>
-<p>Boost Exception was accepted as a Boost library on November 7, 2007; however it has not yet been part of an official Boost release.</p>
+<p>Boost Exception was accepted as a Boost library on November 7 2007, however it has not yet been part of an official Boost release. Current version can be downloaded from <span class="RenoLink"> Boost SVN</span>.</p>
 <h2>Contents</h2>
 <div><ol><li>Tutorial<div><ol><li><span class="RenoLink">Tutorial: Transporting of Arbitrary Data to the Catch Site</span></li>
 <li><span class="RenoLink">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies</span></li>
@@ -39,28 +39,28 @@
 </ol></div>
 </li>
 <li>Transporting of Exceptions between Threads<div><ol><li><tt><span class="RenoLink">exception_ptr</span></tt></li>
-<li><tt><span class="RenoLink">enable_exception_cloning</span>()</tt></li>
-<li><tt><span class="RenoLink">clone_exception</span>()</tt></li>
+<li><tt><span class="RenoLink">enable_current_exception</span>()</tt></li>
+<li><tt><span class="RenoLink">current_exception</span>()</tt></li>
+<li><tt><span class="RenoLink">copy_exception</span>()</tt></li>
 <li><tt><span class="RenoLink">rethrow_exception</span>()</tt></li>
 <li><tt><span class="RenoLink">unknown_exception</span></tt></li>
 </ol></div>
 </li>
 <li><tt><span class="RenoLink">throw_exception</span>()</tt></li>
 <li>Headers<div><ol><li><tt><span class="RenoLink">boost/exception.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/enable_exception_cloning.hpp</span></tt></li>
+<li><tt><span class="RenoLink">boost/exception_ptr.hpp</span></tt></li>
+<li><tt><span class="RenoLink">boost/throw_exception.hpp</span></tt></li>
+<li><tt><span class="RenoLink">boost/exception/enable_current_exception.hpp</span></tt></li>
 <li><tt><span class="RenoLink">boost/exception/enable_error_info.hpp</span></tt></li>
 <li><tt><span class="RenoLink">boost/exception/info.hpp</span></tt></li>
 <li><tt><span class="RenoLink">boost/exception/info_tuple.hpp</span></tt></li>
 <li><tt><span class="RenoLink">boost/exception/error_info.hpp</span></tt></li>
 <li><tt><span class="RenoLink">boost/exception/exception.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/throw_exception.hpp</span></tt></li>
 </ol></div>
 </li>
 </ol></div>
 </li>
 <li><span class="RenoLink">Index</span></li>
-<li><span class="RenoLink">Download</span></li>
-<li><span class="RenoLink">Browse source code</span></li>
 </ol></div>
 <h2>Synopsis</h2>
 <p><tt>#include <<span class="RenoLink">boost/exception.hpp</span>></tt></p>
@@ -128,10 +128,11 @@
 <span class="RenoIncludeSPAN">    typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
 
 <span class="RenoIncludeSPAN">    template <class T>
-    ---unspecified--- <span class="RenoLink">enable_exception_cloning</span>( T const & e );</span>
+    ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const & e );</span>
 
+<span class="RenoIncludeSPAN">    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
 <span class="RenoIncludeSPAN">    template <class T>
-    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">clone_exception</span>( T const & e );</span>
+    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const & e );</span>
 <span class="RenoIncludeSPAN">    void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const & ep );</span>
 
 <span class="RenoIncludeSPAN">    class
@@ -299,22 +300,24 @@
 </div><p>This macro is designed to be used with <tt><span class="RenoLink">operator<<</span>()</tt> when throwing a <tt>boost::<span class="RenoLink">exception</span></tt>, to store information about the location of the throw statement. It can be chained with other <tt><span class="RenoLink">error_info</span></tt>s in a single throw expression.</p>
 </div><h2>Transporting of Exceptions between Threads</h2>
 <div class="RenoIncludeDIV"><h3>exception_ptr</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN">    typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
     }</pre>
-</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of a <tt>boost::<span class="RenoLink">exception</span></tt> object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
+</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
 <p>Two instances of <tt><span class="RenoLink">exception_ptr</span></tt> are equivalent and compare equal if and only if they refer to the same exception.</p>
 <p>The default constructor of <tt><span class="RenoLink">exception_ptr</span></tt> produces the null value of the type. The null value is equivalent only to itself.</p>
-</div><div class="RenoIncludeDIV"><h3>enable_exception_cloning()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/enable_exception_cloning.hpp</span>></tt></p>
+<h4>Note:</h4>
+<p><tt><span class="RenoLink">exception_ptr</span></tt> objects are returned by <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">copy_exception</span>()</tt>.</p>
+</div><div class="RenoIncludeDIV"><h3>enable_current_exception()</h3>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN">    template <class T>
-    ---unspecified--- <span class="RenoLink">enable_exception_cloning</span>( T const & e );</span>
+    ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const & e );</span>
     }</pre>
 </div><h4>Requirements:</h4>
 <p><tt>T</tt> must have an accessible no-throw copy constructor</p>
@@ -329,29 +332,39 @@
     };
 
 ....
-throw boost::<span class="RenoLink">enable_exception_cloning</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> is called at the time an exception object is used in a throw-expression, any attempt to copy it using <tt><span class="RenoLink">clone_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
+throw boost::<span class="RenoLink">enable_current_exception</span>(my_exception());</pre>
+<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, any attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
 <h4>Note:</h4>
 <p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
-</div><div class="RenoIncludeDIV"><h3>clone_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+</div><div class="RenoIncludeDIV"><h3>current_exception()</h3>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN">    template <class T>
-    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">clone_exception</span>( T const & e );</span>
+<span class="RenoIncludeSPAN">    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must be polymorphic.</p>
+<p>The <tt><span class="RenoLink">current_exception</span>()</tt> function must not be called outside of a <tt>catch</tt> block.</p>
 <h4>Returns:</h4>
-<div><ul><li> If <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> was not used at the time the exception object was passed to <tt>throw</tt>, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. In this case, if the original exception object derives from <tt>boost::<span class="RenoLink">exception</span></tt>, then the <tt>boost::<span class="RenoLink">exception</span></tt> sub-object of the <tt><span class="RenoLink">unknown_exception</span></tt> object is initialized by the <tt>boost::<span class="RenoLink">exception</span></tt> copy constructor;</li>
-<li> Otherwise, if the attempt to clone the exception results in a <tt>std::bad_alloc</tt> exception, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to an instance of <tt>std::bad_alloc</tt>;</li>
-<li> Otherwise, the returned <tt><span class="RenoLink">exception_ptr</span></tt> refers to a copy of <tt>e</tt>.</li>
+<div><ul><li> An <tt><span class="RenoLink">exception_ptr</span></tt> that refers to the currently handled exception or a copy of the currently handled exception.</li>
+<li> If the function needs to allocate memory and the attempt fails, it returns an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt>std::bad_alloc</tt>.</li>
 </ul></div>
-<h4>Note:</h4>
-<p>It is unspecified whether the return values of two successive calls to <tt><span class="RenoLink">clone_exception</span>()</tt> refer to the same exception object.</p>
+<h4>Notes:</h4>
+<div><ul><li> It is unspecified whether the return values of two successive calls to <tt><span class="RenoLink">current_exception</span>()</tt> refer to the same exception object.</li>
+<li> Correct implementation of <tt><span class="RenoLink">current_exception</span>()</tt> may require compiler support, unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is used at the time the currently handled exception object was passed to <tt>throw</tt>. If <tt><span class="RenoLink">enable_current_exception</span>()</tt> is not used, and if the compiler does not provide the necessary support, then <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. In this case, if the original exception object derives from <tt>boost::<span class="RenoLink">exception</span></tt>, t
hen the <tt>boost::<span class="RenoLink">exception</span></tt> sub-object of the <tt><span class="RenoLink">unknown_exception</span></tt> object is initialized by the <tt>boost::<span class="RenoLink">exception</span></tt> copy constructor.</li>
+</ul></div>
+</div><div class="RenoIncludeDIV"><h3>copy_exception()</h3>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
+<pre>namespace
+boost
+    {
+<span class="RenoIncludeSPAN">    template <class T>
+    <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const & e );</span>
+    }</pre>
+</div><h4>Effects:</h4>
+<p>As if <tt>try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</tt></p>
 </div><div class="RenoIncludeDIV"><h3>rethrow_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
@@ -362,7 +375,7 @@
 <h4>Throws:</h4>
 <p>The exception to which <tt>ep</tt> refers.</p>
 </div><div class="RenoIncludeDIV"><h3>unknown_exception</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
@@ -374,8 +387,7 @@
         ---unspecified---
         };</span>
     }</pre>
-</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception.</p>
-<p>To allow an exception to be cloned, <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> must be used at the time the exception object is passed to <tt>throw</tt>. Otherwise, calling <tt><span class="RenoLink">clone_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
+</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception. Please see <tt><span class="RenoLink">current_exception</span>()</tt>.</p>
 </div><h2>Throwing Exceptions</h2>
 <div class="RenoIncludeDIV"><h3>throw_exception()</h3>
 <div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/throw_exception.hpp</span>></tt></p>
@@ -390,7 +402,7 @@
 #endif</span>
     }</pre>
 </div><h4>Effects:</h4>
-<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_exception_cloning</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
+<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
 <li> If <tt>BOOST_NO_EXCEPTIONS</tt> is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <tt>throw_exception</tt> are allowed to assume that the function never returns; therefore, if the user-defined <tt>throw_exception</tt> returns, the behavior is undefined.</li>
 </ul></div>
 </div><div id="footer">
Modified: branches/proto/v4/libs/exception/doc/cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/cloning.html	(original)
+++ branches/proto/v4/libs/exception/doc/cloning.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -17,12 +17,12 @@
 <h1>Boost Exception</h1>
 </div>
 <div class="RenoIncludeDIV"><h2>Transporting of Exceptions between Threads</h2>
-<p>Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to <span class="RenoLink">N2179</span>, but because Boost Exception can not rely on language support, the use of <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> at the time of the throw is required in order to use cloning.</p>
+<p>Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to <span class="RenoLink">N2179</span>, but because Boost Exception can not rely on language support, the use of <tt><span class="RenoLink">enable_current_exception</span>()</tt> at the time of the throw is required in order to use cloning.</p>
 <h4>Note:</h4>
 <p>All exceptions emitted by the familiar function <tt>boost::<span class="RenoLink">throw_exception</span>()</tt> are guaranteed to derive from <tt>boost::<span class="RenoLink">exception</span></tt> and to support cloning.</p>
-<div class="RenoIncludeDIV"><h3>Using enable_exception_cloning() at the Time of the Throw</h3>
+<div class="RenoIncludeDIV"><h3>Using enable_current_exception() at the Time of the Throw</h3>
 <p>Here is how cloning can be enabled in a throw-expression (15.1):</p>
-<pre>#include <<span class="RenoLink">boost/exception/enable_exception_cloning.hpp</span>>
+<pre>#include <<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>>
 #include <<span class="RenoLink">boost/exception/info.hpp</span>>
 #include <stdio.h>
 #include <errno.h>
@@ -35,12 +35,12 @@
 file_read( FILE * f, void * buffer, size_t size )
     {
     if( size!=fread(buffer,1,size,f) )
-        throw boost::<span class="RenoLink">enable_exception_cloning</span>(file_read_error()) <<
+        throw boost::<span class="RenoLink">enable_current_exception</span>(file_read_error()) <<
             errno_info(errno);
     }</pre>
 </div><div class="RenoIncludeDIV"><h3>Cloning and Re-throwing an Exception</h3>
-<p>When you catch a <tt>boost::<span class="RenoLink">exception</span></tt>, you can call <tt><span class="RenoLink">clone_exception</span>()</tt> to get an <tt><span class="RenoLink">exception_ptr</span></tt> object:</p>
-<pre>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>>
+<p>When you catch a <tt>boost::<span class="RenoLink">exception</span></tt>, you can call <tt><span class="RenoLink">current_exception</span>()</tt> to get an <tt><span class="RenoLink">exception_ptr</span></tt> object:</p>
+<pre>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>>
 #include <boost/thread.hpp>
 #include <boost/bind.hpp>
 
@@ -55,12 +55,12 @@
         error = boost::<span class="RenoLink">exception_ptr</span>();
         }
     catch(
-    boost::<span class="RenoLink">exception</span> & e )
+    ... )
         {
-        error = boost::<span class="RenoLink">clone_exception</span>(e);
+        error = boost::<span class="RenoLink">current_exception</span>();
         }
     }</pre>
-<p>In the above example, note that <tt><span class="RenoLink">clone_exception</span>()</tt> captures the original type of the exception object, even though <tt>e</tt> refers to the base type <tt>boost::<span class="RenoLink">exception</span></tt>. This original type can be thrown again using the <tt><span class="RenoLink">rethrow_exception</span>()</tt> function:</p>
+<p>In the above example, note that <tt><span class="RenoLink">current_exception</span>()</tt> captures the original type of the exception object. The exception can be thrown again using the <tt><span class="RenoLink">rethrow_exception</span>()</tt> function:</p>
 <pre>// ...continued
 
 void
@@ -72,11 +72,11 @@
     if( error )
         boost::<span class="RenoLink">rethrow_exception</span>(error);
     }</pre>
-<p><tt><span class="RenoLink">Clone_exception</span>()</tt> could fail to copy the original exception object in the following cases:</p>
+<p><tt><span class="RenoLink">current_exception</span>()</tt> could fail to copy the original exception object in the following cases:</p>
 <div><ul><li> if there is not enough memory, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt>std::bad_alloc</tt>, or</li>
-<li> if <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> was not used in the throw-expression passed to the original <tt>throw</tt> statement, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</li>
+<li> if <tt><span class="RenoLink">enable_current_exception</span>()</tt> was not used in the throw-expression passed to the original <tt>throw</tt> statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</li>
 </ul></div>
-<p>Regardless, the use of <tt><span class="RenoLink">clone_exception</span>()</tt> and <tt><span class="RenoLink">rethrow_exception</span>()</tt> in the above examples is well-formed.</p>
+<p>Regardless, the use of <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">rethrow_exception</span>()</tt> in the above examples is well-formed.</p>
 </div></div><h3>See also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
 </a><a href="unknown_exception.html">unknown_exception<br/>
Modified: branches/proto/v4/libs/exception/doc/exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception.html	(original)
+++ branches/proto/v4/libs/exception/doc/exception.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -68,11 +68,10 @@
 </div></div></div><h3>See also:</h3>
 <div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
 </a><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="clone_exception.html">clone_exception<br/>
+</a><a href="current_exception.html">current_exception<br/>
+</a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a><a href="enable_error_info.html">enable_error_info<br/>
-</a><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
 </a><a href="error_info.html">error_info<br/>
-</a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
 </a><a href="operator_shl_exception.html">operator<</exception<br/>
 </a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
Modified: branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html	(original)
+++ branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -3,7 +3,7 @@
 <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
 <head>
         <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
-	<title>boost/exception/cloning.hpp</title>
+	<title>boost/exception_ptr.hpp</title>
         <link href='reno.css' type='text/css' rel='stylesheet'/>
 </head>
 <body>
@@ -16,9 +16,10 @@
 </div>
 <h1>Boost Exception</h1>
 </div>
-<h3>boost/exception/cloning.hpp</h3>
+<h3>boost/exception_ptr.hpp</h3>
 <p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="clone_exception.html">clone_exception<br/>
+<div class="RenoPageList"><a href="copy_exception.html">copy_exception<br/>
+</a><a href="current_exception.html">current_exception<br/>
 </a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="rethrow_exception.html">rethrow_exception<br/>
 </a><a href="unknown_exception.html">unknown_exception<br/>
Modified: branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html	(original)
+++ branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -3,7 +3,7 @@
 <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
 <head>
         <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
-	<title>boost/exception/enable_exception_cloning.hpp</title>
+	<title>boost/exception/enable_current_exception.hpp</title>
         <link href='reno.css' type='text/css' rel='stylesheet'/>
 </head>
 <body>
@@ -16,9 +16,9 @@
 </div>
 <h1>Boost Exception</h1>
 </div>
-<h3>boost/exception/enable_exception_cloning.hpp</h3>
+<h3>boost/exception/enable_current_exception.hpp</h3>
 <p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
+<div class="RenoPageList"><a href="enable_current_exception.html">enable_current_exception<br/>
 </a></div>
 <div id="footer">
 <p> </p>
Modified: branches/proto/v4/libs/exception/doc/exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_hpp.html	(original)
+++ branches/proto/v4/libs/exception/doc/exception_hpp.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -19,13 +19,13 @@
 <h3>boost/exception.hpp</h3>
 <p>This header file includes all other header files of Boost Exception:</p>
 <div class="RenoPageList"><a href="exception_hpp.html">boost/exception.hpp<br/>
-</a><a href="exception_cloning_hpp.html">boost/exception/cloning.hpp<br/>
+</a><a href="exception_enable_exception_cloning_hpp.html">boost/exception/enable_current_exception.hpp<br/>
 </a><a href="exception_enable_error_info_hpp.html">boost/exception/enable_error_info.hpp<br/>
-</a><a href="exception_enable_exception_cloning_hpp.html">boost/exception/enable_exception_cloning.hpp<br/>
 </a><a href="exception_error_info_value_hpp.html">boost/exception/error_info.hpp<br/>
 </a><a href="exception_exception_hpp.html">boost/exception/exception.hpp<br/>
 </a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
 </a><a href="exception_error_info_group_hpp.html">boost/exception/info_tuple.hpp<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
 </a></div>
 <div id="footer">
Modified: branches/proto/v4/libs/exception/doc/exception_ptr.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_ptr.html	(original)
+++ branches/proto/v4/libs/exception/doc/exception_ptr.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -17,21 +17,23 @@
 <h1>Boost Exception</h1>
 </div>
 <div class="RenoIncludeDIV"><h3>exception_ptr</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN">    typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
     }</pre>
-</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of a <tt>boost::<span class="RenoLink">exception</span></tt> object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
+</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
 <p>Two instances of <tt><span class="RenoLink">exception_ptr</span></tt> are equivalent and compare equal if and only if they refer to the same exception.</p>
 <p>The default constructor of <tt><span class="RenoLink">exception_ptr</span></tt> produces the null value of the type. The null value is equivalent only to itself.</p>
+<h4>Note:</h4>
+<p><tt><span class="RenoLink">exception_ptr</span></tt> objects are returned by <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">copy_exception</span>()</tt>.</p>
 </div><h3>See also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="clone_exception.html">clone_exception<br/>
-</a><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
+</a><a href="copy_exception.html">copy_exception<br/>
+</a><a href="current_exception.html">current_exception<br/>
+</a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a><a href="rethrow_exception.html">rethrow_exception<br/>
-</a><a href="unknown_exception.html">unknown_exception<br/>
 </a></div>
 <div id="footer">
 <p> </p>
Modified: branches/proto/v4/libs/exception/doc/name_idx.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/name_idx.html	(original)
+++ branches/proto/v4/libs/exception/doc/name_idx.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -21,19 +21,20 @@
 <p>BOOST_ERROR_INFO</p>
 <h3>b</h3>
 <p>boost/exception.hpp</p>
-<p>boost/exception/cloning.hpp</p>
+<p>boost/exception/enable_current_exception.hpp</p>
 <p>boost/exception/enable_error_info.hpp</p>
-<p>boost/exception/enable_exception_cloning.hpp</p>
 <p>boost/exception/error_info.hpp</p>
 <p>boost/exception/exception.hpp</p>
 <p>boost/exception/info.hpp</p>
 <p>boost/exception/info_tuple.hpp</p>
+<p>boost/exception_ptr.hpp</p>
 <p>boost/throw_exception.hpp</p>
 <h3>c</h3>
-<p>clone_exception</p>
+<p>copy_exception</p>
+<p>current_exception</p>
 <h3>e</h3>
+<p>enable_current_exception</p>
 <p>enable_error_info</p>
-<p>enable_exception_cloning</p>
 <p>error_info</p>
 <p>exception</p>
 <p>exception::exception</p>
Modified: branches/proto/v4/libs/exception/doc/rethrow_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/rethrow_exception.html	(original)
+++ branches/proto/v4/libs/exception/doc/rethrow_exception.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -17,7 +17,7 @@
 <h1>Boost Exception</h1>
 </div>
 <div class="RenoIncludeDIV"><h3>rethrow_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
Modified: branches/proto/v4/libs/exception/doc/throw_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/throw_exception.html	(original)
+++ branches/proto/v4/libs/exception/doc/throw_exception.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -29,12 +29,12 @@
 #endif</span>
     }</pre>
 </div><h4>Effects:</h4>
-<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_exception_cloning</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
+<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
 <li> If <tt>BOOST_NO_EXCEPTIONS</tt> is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <tt>throw_exception</tt> are allowed to assume that the function never returns; therefore, if the user-defined <tt>throw_exception</tt> returns, the behavior is undefined.</li>
 </ul></div>
 </div><h3>See also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
+</a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
 </a></div>
 <div id="footer">
Modified: branches/proto/v4/libs/exception/doc/transporting_data.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/transporting_data.html	(original)
+++ branches/proto/v4/libs/exception/doc/transporting_data.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -141,7 +141,7 @@
 #include <boost/shared_ptr.hpp>
 #include <stdio.h>
 #include <string>
-#include <errno>
+#include <errno.h>
 
 typedef boost::<span class="RenoLink">error_info</span><struct tag_file_name,std::string> file_name_info;
 typedef boost::<span class="RenoLink">error_info</span><struct tag_function,char const *> function_info;
Modified: branches/proto/v4/libs/exception/doc/unknown_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/unknown_exception.html	(original)
+++ branches/proto/v4/libs/exception/doc/unknown_exception.html	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -17,7 +17,7 @@
 <h1>Boost Exception</h1>
 </div>
 <div class="RenoIncludeDIV"><h3>unknown_exception</h3>
-<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception/cloning.hpp</span>></tt></p>
+<div class="RenoIncludeDIV"><p><tt>#include <<span class="RenoLink">boost/exception_ptr.hpp</span>></tt></p>
 <pre>namespace
 boost
     {
@@ -29,12 +29,11 @@
         ---unspecified---
         };</span>
     }</pre>
-</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception.</p>
-<p>To allow an exception to be cloned, <tt><span class="RenoLink">enable_exception_cloning</span>()</tt> must be used at the time the exception object is passed to <tt>throw</tt>. Otherwise, calling <tt><span class="RenoLink">clone_exception</span>()</tt> returns an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</p>
+</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception. Please see <tt><span class="RenoLink">current_exception</span>()</tt>.</p>
 </div><h3>See also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="clone_exception.html">clone_exception<br/>
-</a><a href="enable_exception_cloning.html">enable_exception_cloning<br/>
+</a><a href="current_exception.html">current_exception<br/>
+</a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a></div>
 <div id="footer">
 <p> </p>
Modified: branches/proto/v4/libs/exception/example/cloning_1.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/cloning_1.cpp	(original)
+++ branches/proto/v4/libs/exception/example/cloning_1.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -5,7 +5,7 @@
 
 //This example shows how to enable cloning when throwing a boost::exception.
 
-#include <boost/exception/enable_exception_cloning.hpp>
+#include <boost/exception/enable_current_exception.hpp>
 #include <boost/exception/info.hpp>
 #include <stdio.h>
 #include <errno.h>
@@ -18,5 +18,6 @@
 file_read( FILE * f, void * buffer, size_t size )
     {
     if( size!=fread(buffer,1,size,f) )
-        throw boost::enable_exception_cloning(file_read_error()) << errno_info(errno);
+        throw boost::enable_current_exception(file_read_error()) <<
+            errno_info(errno);
     }
Modified: branches/proto/v4/libs/exception/example/cloning_2.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/cloning_2.cpp	(original)
+++ branches/proto/v4/libs/exception/example/cloning_2.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -5,7 +5,7 @@
 
 //This example shows how to transport cloning-enabled boost::exceptions between threads.
 
-#include <boost/exception/cloning.hpp>
+#include <boost/exception_ptr.hpp>
 #include <boost/thread.hpp>
 #include <boost/bind.hpp>
 
@@ -20,13 +20,13 @@
         error = boost::exception_ptr();
         }
     catch(
-    boost::exception & e )
+    ... )
         {
-        error = boost::clone_exception(e);
+        error = boost::current_exception();
         }
     }
 
-//
+// ...continued
 
 void
 work()
Modified: branches/proto/v4/libs/exception/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/exception/test/Jamfile.v2	(original)
+++ branches/proto/v4/libs/exception/test/Jamfile.v2	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -16,6 +16,7 @@
 
 #exception
 run cloning_test.cpp ;
+run copy_exception_test.cpp ;
 run unknown_exception_test.cpp ;
 run exception_test.cpp ;
 run boost_error_info_test.cpp ;
@@ -25,3 +26,13 @@
 run error_info_test.cpp ;
 run what_test.cpp ;
 compile-fail exception_fail.cpp ;
+
+#headers
+compile enable_current_exception_hpp_test.cpp ;
+compile enable_error_info_hpp_test.cpp ;
+compile error_info_hpp_test.cpp ;
+compile exception_hpp_test.cpp ;
+compile info_hpp_test.cpp ;
+compile info_tuple_hpp_test.cpp ;
+compile to_string_hpp_test.cpp ;
+compile to_string_stub_hpp_test.cpp ;
Modified: branches/proto/v4/libs/exception/test/cloning_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/cloning_test.cpp	(original)
+++ branches/proto/v4/libs/exception/test/cloning_test.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -3,7 +3,7 @@
 //Distributed under 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 <boost/exception/cloning.hpp>
+#include <boost/exception_ptr.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 struct
@@ -17,12 +17,12 @@
     {
     try
         {
-        throw boost::enable_exception_cloning(test_exception());
+        throw boost::enable_current_exception(test_exception());
         }
     catch(
-    std::exception & x )
+    ... )
         {
-        boost::exception_ptr p = boost::clone_exception(x);
+        boost::exception_ptr p = boost::current_exception();
         try
             {
             rethrow_exception(p);
Modified: branches/proto/v4/libs/exception/test/throw_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/throw_exception_test.cpp	(original)
+++ branches/proto/v4/libs/exception/test/throw_exception_test.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -5,7 +5,7 @@
 
 #include "helper2.hpp"
 #include <boost/exception/info.hpp>
-#include <boost/exception/cloning.hpp>
+#include <boost/exception_ptr.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 typedef boost::error_info<struct tag_test_int,int> test_int;
@@ -35,9 +35,9 @@
         BOOST_ASSERT(false);
         }
     catch(
-    std::exception & x )
+    ... )
         {
-        boost::exception_ptr p = boost::clone_exception(x);
+        boost::exception_ptr p = boost::current_exception();
         try
             {
             rethrow_exception(p);
@@ -55,11 +55,6 @@
             BOOST_TEST(false);
             }
         }
-    catch(
-    ... )
-        {
-        BOOST_TEST(false);
-        }
     }
 
 int
Modified: branches/proto/v4/libs/exception/test/unknown_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/unknown_exception_test.cpp	(original)
+++ branches/proto/v4/libs/exception/test/unknown_exception_test.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -3,7 +3,7 @@
 //Distributed under 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 <boost/exception/cloning.hpp>
+#include <boost/exception_ptr.hpp>
 #include <boost/exception/info.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
@@ -40,9 +40,9 @@
         throw_boost_exception();
         }
     catch(
-    boost::exception & x )
+    ... )
         {
-        boost::exception_ptr ep=boost::clone_exception(x);
+        boost::exception_ptr ep=boost::current_exception();
         try
             {
             rethrow_exception(ep);
@@ -57,15 +57,29 @@
             {
             BOOST_TEST(false);
             }
+        try
+            {
+            rethrow_exception(ep);
+            }
+        catch(
+        boost::exception & x )
+            {
+            BOOST_TEST( 42==*boost::get_error_info<test>(x) );
+            }
+        catch(
+        ... )
+            {
+            BOOST_TEST(false);
+            }
         }
     try
         {
         throw_unknown_exception();
         }
     catch(
-    std::exception & x )
+    ... )
         {
-        boost::exception_ptr ep=boost::clone_exception(x);
+        boost::exception_ptr ep=boost::current_exception();
         try
             {
             rethrow_exception(ep);
@@ -79,6 +93,19 @@
             {
             BOOST_TEST(false);
             }
+        try
+            {
+            rethrow_exception(ep);
+            }
+        catch(
+        boost::exception & )
+            {
+            }
+        catch(
+        ... )
+            {
+            BOOST_TEST(false);
+            }
         }
     return boost::report_errors();
     }
Modified: branches/proto/v4/libs/math/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/math/test/Jamfile.v2	(original)
+++ branches/proto/v4/libs/math/test/Jamfile.v2	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -13,7 +13,8 @@
       <toolset>gcc:<cxxflags>-Wno-missing-braces
       <toolset>darwin:<cxxflags>-Wno-missing-braces
       <toolset>acc:<cxxflags>+W2068,2461,2236,4070,4069
-      <toolset>intel:<cxxflags>-Qwd264,239
+      <toolset>intel:<cxxflags>-Qwd264
+      <toolset>intel:<cxxflags>-Qwd239
       <toolset>intel:<cxxflags>/nologo 
       <toolset>intel-linux:<cxxflags>-wd239 
       <toolset>intel:<linkflags>/nologo 
Modified: branches/proto/v4/libs/math/test/pow_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/pow_test.cpp	(original)
+++ branches/proto/v4/libs/math/test/pow_test.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -106,7 +106,9 @@
     BOOST_STATIC_ASSERT((is_same<BOOST_TYPEOF(pow<2>(5ul)), double>::value));
     BOOST_STATIC_ASSERT((is_same<BOOST_TYPEOF(pow<2>(6.0f)), float>::value));
     BOOST_STATIC_ASSERT((is_same<BOOST_TYPEOF(pow<2>(7.0)), double>::value));
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
     BOOST_STATIC_ASSERT((is_same<BOOST_TYPEOF(pow<2>(7.0l)), long double>::value));
+#endif
 };
 
 
Modified: branches/proto/v4/libs/math/test/test_expint.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_expint.cpp	(original)
+++ branches/proto/v4/libs/math/test/test_expint.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -60,6 +60,36 @@
    largest_type = "(long\\s+)?double";
 #endif
 
+   //
+   // On MacOS X erfc has much higher error levels than
+   // expected: given that the implementation is basically
+   // just a rational function evaluation combined with
+   // exponentiation, we conclude that exp and pow are less
+   // accurate on this platform, especially when the result 
+   // is outside the range of a double.
+   //
+   add_expected_result(
+      ".*",                          // compiler
+      ".*",                          // stdlib
+      "Mac OS",                      // platform
+      "float|double|long double",    // test type(s)
+      ".*E1.*",                      // test data group
+      ".*", 30, 10);                   // test function
+   add_expected_result(
+      ".*",                          // compiler
+      ".*",                          // stdlib
+      "Mac OS",                      // platform
+      "float|double|long double",    // test type(s)
+      ".*Ei.*",                      // test data group
+      ".*", 300, 200);                   // test function
+   add_expected_result(
+      ".*",                          // compiler
+      ".*",                          // stdlib
+      "Mac OS",                      // platform
+      ".*",                          // test type(s)
+      ".*",                          // test data group
+      ".*", 40, 15);                   // test function
+
    add_expected_result(
       ".*",                          // compiler
       ".*",                          // stdlib
@@ -131,7 +161,11 @@
    std::cout << test_name << " with type " << type_name << std::endl;
 
    typedef value_type (*pg)(value_type, value_type);
+#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS)
+   pg funcp = expint_wrapper<value_type>;
+#else
    pg funcp = expint_wrapper;
+#endif
 
    boost::math::tools::test_result<value_type> result;
    //
@@ -172,7 +206,11 @@
    std::cout << test_name << " with type " << type_name << std::endl;
 
    typedef value_type (*pg)(value_type);
+#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS)
+   pg funcp = boost::math::expint<value_type>;
+#else
    pg funcp = boost::math::expint;
+#endif
 
    boost::math::tools::test_result<value_type> result;
    //
Modified: branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp	(original)
+++ branches/proto/v4/libs/math/test/test_nc_chi_squared.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -80,6 +80,13 @@
    largest_type = "(long\\s+)?double|real_concept";
 #endif
 
+   add_expected_result(
+      "[^|]*",                          // compiler
+      "[^|]*",                          // stdlib
+      "Mac OS",                          // platform
+      largest_type,                     // test type(s)
+      "[^|]*medium[^|]*",                   // test data group
+      "[^|]*", 550, 100);                  // test function
    //
    // Catch all cases come last:
    //
Modified: branches/proto/v4/libs/math/test/test_zeta.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_zeta.cpp	(original)
+++ branches/proto/v4/libs/math/test/test_zeta.cpp	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -105,7 +105,11 @@
    std::cout << test_name << " with type " << type_name << std::endl;
 
    typedef value_type (*pg)(value_type);
+#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS)
+   pg funcp = boost::math::zeta<value_type>;
+#else
    pg funcp = boost::math::zeta;
+#endif
 
    boost::math::tools::test_result<value_type> result;
    //
@@ -153,11 +157,11 @@
 {
    std::cout << "Testing basic sanity checks for type " << t << std::endl;
    //
-   // Basic sanity checks, tolerance is either 2 or 10 epsilon 
+   // Basic sanity checks, tolerance is either 5 or 10 epsilon 
    // expressed as a percentage:
    //
    T tolerance = boost::math::tools::epsilon<T>() * 100 *
-      (boost::is_floating_point<T>::value ? 2 : 10);
+      (boost::is_floating_point<T>::value ? 5 : 10);
    BOOST_CHECK_CLOSE(::boost::math::zeta(static_cast<T>(0.125)), static_cast<T>(-0.63277562349869525529352526763564627152686379131122L), tolerance);
    BOOST_CHECK_CLOSE(::boost::math::zeta(static_cast<T>(1023) / static_cast<T>(1024)), static_cast<T>(-1023.4228554489429786541032870895167448906103303056L), tolerance);
    BOOST_CHECK_CLOSE(::boost::math::zeta(static_cast<T>(1025) / static_cast<T>(1024)), static_cast<T>(1024.5772867695045940578681624248887776501597556226L), tolerance);
Modified: branches/proto/v4/libs/python/test/vector_indexing_suite.py
==============================================================================
--- branches/proto/v4/libs/python/test/vector_indexing_suite.py	(original)
+++ branches/proto/v4/libs/python/test/vector_indexing_suite.py	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -322,6 +322,19 @@
 [ a b c d e f g h i j ]
 
 #####################################################################
+# extend using a generator expression
+#####################################################################
+>>> v[:] = ['a','b','c','d','e'] # reset again
+>>> def generator():
+...   addlist = ['f','g','h','i','j']
+...   for i in addlist:
+...     if i != 'g':
+...       yield i
+>>> v.extend(generator())
+>>> print_xvec(v)
+[ a b c d e f h i j ]
+
+#####################################################################
 # vector of strings
 #####################################################################
 >>> sv = StringVec()
Modified: branches/proto/v4/tools/build/v2/tools/common.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/common.jam	(original)
+++ branches/proto/v4/tools/build/v2/tools/common.jam	2008-04-16 01:50:41 EDT (Wed, 16 Apr 2008)
@@ -5,8 +5,8 @@
 # Distributed under the Boost Software License, Version 1.0.
 # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
-#  Provides actions common to all toolsets, for as making directoies and
-#  removing files.
+#   Provides actions common to all toolsets, such as creating directories and
+# removing files.
 
 import os ;
 import modules ;