$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r86727 - in branches/release/libs/serialization: . doc example performance/xml src test util vc7ide
From: ramey_at_[hidden]
Date: 2013-11-16 15:13:39
Author: ramey
Date: 2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)
New Revision: 86727
URL: http://svn.boost.org/trac/boost/changeset/86727
Log:
merge trunk to release
Deleted:
   branches/release/libs/serialization/vc7ide/
Properties modified: 
   branches/release/libs/serialization/   (props changed)
   branches/release/libs/serialization/example/   (props changed)
   branches/release/libs/serialization/src/   (props changed)
   branches/release/libs/serialization/test/test_diamond_complex.cpp   (props changed)
Text files modified: 
   branches/release/libs/serialization/doc/archive_reference.html                       |     6 +-                                      
   branches/release/libs/serialization/example/demo_dll_a.hpp                           |    11 ++----                                  
   branches/release/libs/serialization/example/demo_dll_a.ipp                           |    10 +----                                   
   branches/release/libs/serialization/example/demo_dll_b.hpp                           |     7 ++-                                     
   branches/release/libs/serialization/example/demo_dll_b.ipp                           |     6 +-                                      
   branches/release/libs/serialization/example/log_archive.hpp                          |     9 ++++                                    
   branches/release/libs/serialization/example/polymorphic_portable_binary_iarchive.hpp |     2                                         
   branches/release/libs/serialization/example/polymorphic_portable_binary_oarchive.hpp |     2                                         
   branches/release/libs/serialization/example/portable_binary_archive.hpp              |     2                                         
   branches/release/libs/serialization/example/portable_binary_iarchive.hpp             |     2                                         
   branches/release/libs/serialization/example/portable_binary_oarchive.hpp             |     2                                         
   branches/release/libs/serialization/example/simple_log_archive.hpp                   |     2                                         
   branches/release/libs/serialization/performance/xml/harness.hpp                      |     2                                         
   branches/release/libs/serialization/performance/xml/macro.hpp                        |     2                                         
   branches/release/libs/serialization/performance/xml/node.hpp                         |     2                                         
   branches/release/libs/serialization/src/basic_archive.cpp                            |     2                                         
   branches/release/libs/serialization/src/basic_iarchive.cpp                           |    14 ++++---                                 
   branches/release/libs/serialization/src/basic_serializer_map.cpp                     |     5 +-                                      
   branches/release/libs/serialization/src/shared_ptr_helper.cpp                        |     2                                         
   branches/release/libs/serialization/src/utf8_codecvt_facet.cpp                       |    21 +++++------                             
   branches/release/libs/serialization/test/A.cpp                                       |     9 +---                                    
   branches/release/libs/serialization/test/A.hpp                                       |     2                                         
   branches/release/libs/serialization/test/B.hpp                                       |    10 +++--                                   
   branches/release/libs/serialization/test/C.hpp                                       |     2                                         
   branches/release/libs/serialization/test/D.hpp                                       |     2                                         
   branches/release/libs/serialization/test/J.hpp                                       |     2                                         
   branches/release/libs/serialization/test/base.hpp                                    |     2                                         
   branches/release/libs/serialization/test/derived2.hpp                                |     2                                         
   branches/release/libs/serialization/test/polymorphic_base.hpp                        |     2                                         
   branches/release/libs/serialization/test/polymorphic_derived1.hpp                    |     2                                         
   branches/release/libs/serialization/test/polymorphic_derived2.hpp                    |     2                                         
   branches/release/libs/serialization/test/test_array.cpp                              |    52 ++++++++----------------------          
   branches/release/libs/serialization/test/test_codecvt_null.cpp                       |     2                                         
   branches/release/libs/serialization/test/test_complex.cpp                            |    27 ++++++++++-----                         
   branches/release/libs/serialization/test/test_decl.hpp                               |     2                                         
   branches/release/libs/serialization/test/test_delete_pointer.cpp                     |    67 ++++++++++++++++++--------------------- 
   branches/release/libs/serialization/test/test_iterators.cpp                          |     2                                         
   branches/release/libs/serialization/test/test_map.cpp                                |     4 -                                       
   branches/release/libs/serialization/test/test_non_default_ctor.cpp                   |    13 ++++---                                 
   branches/release/libs/serialization/test/test_non_intrusive.cpp                      |    13 ++++---                                 
   branches/release/libs/serialization/test/test_set.cpp                                |     2                                         
   branches/release/libs/serialization/test/test_shared_ptr.cpp                         |     1                                         
   branches/release/libs/serialization/test/test_shared_ptr_132.cpp                     |     3 -                                       
   branches/release/libs/serialization/test/test_shared_ptr_multi_base.cpp              |     1                                         
   branches/release/libs/serialization/test/test_simple_class.cpp                       |    16 +-------                                
   branches/release/libs/serialization/test/test_smart_cast.cpp                         |     8 ----                                    
   branches/release/libs/serialization/test/test_tools.hpp                              |    14 ++++----                                
   branches/release/libs/serialization/test/test_traits_fail.cpp                        |     2                                         
   branches/release/libs/serialization/test/test_utf8_codecvt.cpp                       |    12 +++++-                                  
   branches/release/libs/serialization/test/test_variant.cpp                            |     7 ++-                                     
   branches/release/libs/serialization/util/test.jam                                    |     1                                         
   51 files changed, 183 insertions(+), 214 deletions(-)
Modified: branches/release/libs/serialization/doc/archive_reference.html
==============================================================================
--- branches/release/libs/serialization/doc/archive_reference.html	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/doc/archive_reference.html	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -57,7 +57,7 @@
     // serialization library
     typedef boost::mpl::bool_<true> is_saving; 
     typedef boost::mpl::bool_<false> is_loading;
-    template<class T> register_type(){}
+    template<class T> void register_type(){}
     template<class T> trivial_oarchive & operator<<(const T & t){
         return *this;
     }
@@ -140,7 +140,7 @@
 
 <dl>
 
-<dt><h4><code>void save_start()</code></h4></dt>
+<dt><h4><code>void save_start(char const *)</code></h4></dt>
 <dd>
 <strong>Default</strong>:Does nothing.<br>
 <strong>Purpose</strong>:To inject/retrieve an object name into the archive.  Used
@@ -148,7 +148,7 @@
 </dd>
 <p>
 
-<dt><h4><code>void save_end()</code></h4></dt>
+<dt><h4><code>void save_end(char const *)</code></h4></dt>
 <dd>
 <strong>Default</strong>:Does nothing.<br>
 <strong>Purpose</strong>:To inject/retrieve an object name into the archive. Used
Modified: branches/release/libs/serialization/example/demo_dll_a.hpp
==============================================================================
--- branches/release/libs/serialization/example/demo_dll_a.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/demo_dll_a.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_A_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -20,6 +20,7 @@
 #include <cstdlib> // for rand()
 #include <cmath> // for fabs()
 #include <cstddef> // size_t
+#include <boost/math/special_functions/next.hpp>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -245,13 +246,9 @@
         return false; 
     if(v != rhs.v)
         return false; 
-    if(w == 0 && std::fabs(rhs.w) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(w, rhs.w)) > 1)
         return false;
-    if(std::fabs(rhs.w/w - 1.0) > std::numeric_limits<float>::epsilon())
-        return false;
-    if(x == 0 && std::fabs(rhs.x - x) > std::numeric_limits<float>::epsilon())
-        return false;
-    if(std::fabs(rhs.x/x - 1.0) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(x, rhs.x)) > 1)
         return false;
     if(0 != y.compare(rhs.y))
         return false;
Modified: branches/release/libs/serialization/example/demo_dll_a.ipp
==============================================================================
--- branches/release/libs/serialization/example/demo_dll_a.ipp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/demo_dll_a.ipp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_A_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -244,14 +244,10 @@
     if(u != rhs.u)
         return false; 
     if(v != rhs.v)
-        return false; 
-    if(w == 0 && std::fabs(rhs.w) > std::numeric_limits<float>::epsilon())
-        return false;
-    if(std::fabs(rhs.w/w - 1.0) > std::numeric_limits<float>::epsilon())
         return false;
-    if(x == 0 && std::fabs(rhs.x - x) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(w, rhs.w)) > 1)
         return false;
-    if(std::fabs(rhs.x/x - 1.0) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(x, rhs.x)) > 1)
         return false;
     if(0 != y.compare(rhs.y))
         return false;
Modified: branches/release/libs/serialization/example/demo_dll_b.hpp
==============================================================================
--- branches/release/libs/serialization/example/demo_dll_b.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/demo_dll_b.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_B_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -17,6 +17,7 @@
 //  See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstdlib> // for rand()
+#include <boost/math/special_functions/next.hpp>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -104,8 +105,8 @@
         && t == rhs.t 
         && u == rhs.u 
         && v == rhs.v 
-        && std::fabs(w - rhs.w) <= std::numeric_limits<float>::round_error()
-        && std::fabs(x - rhs.x) <= std::numeric_limits<float>::round_error()
+        && std::abs( boost::math::float_distance(w, rhs.w)) < 2
+        && std::abs( boost::math::float_distance(x, rhs.x)) < 2
     ;
 }
 
Modified: branches/release/libs/serialization/example/demo_dll_b.ipp
==============================================================================
--- branches/release/libs/serialization/example/demo_dll_b.ipp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/demo_dll_b.ipp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_B_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -104,8 +104,8 @@
         && t == rhs.t 
         && u == rhs.u 
         && v == rhs.v 
-        && std::fabs(w - rhs.w) <= std::numeric_limits<float>::round_error()
-        && std::fabs(x - rhs.x) <= std::numeric_limits<float>::round_error()
+        && std::abs( boost::math::float_distance(w, rhs.w)) < 2
+        && std::abs( boost::math::float_distance(x, rhs.x)) < 2
     ;
 }
 
Modified: branches/release/libs/serialization/example/log_archive.hpp
==============================================================================
--- branches/release/libs/serialization/example/log_archive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/log_archive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define LOG_ARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -18,6 +18,13 @@
 
 #include <boost/archive/xml_oarchive.hpp>
 
+namespace boost {
+namespace archive {
+    namespace detail {
+        template<class Archive> class interface_oarchive;
+    } // namespace detail
+} // namespace archive
+
 /////////////////////////////////////////////////////////////////////////
 // log data to an output stream.  This illustrates a simpler implemenation
 // of text output which is useful for getting a formatted display of
Modified: branches/release/libs/serialization/example/polymorphic_portable_binary_iarchive.hpp
==============================================================================
--- branches/release/libs/serialization/example/polymorphic_portable_binary_iarchive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/polymorphic_portable_binary_iarchive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_ARCHIVE_POLYMORPHIC_PORTABLE_BINARY_IARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/example/polymorphic_portable_binary_oarchive.hpp
==============================================================================
--- branches/release/libs/serialization/example/polymorphic_portable_binary_oarchive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/polymorphic_portable_binary_oarchive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_ARCHIVE_POLYMORPHIC_PORTABLE_BINARY_OARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/example/portable_binary_archive.hpp
==============================================================================
--- branches/release/libs/serialization/example/portable_binary_archive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/portable_binary_archive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -7,7 +7,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/example/portable_binary_iarchive.hpp
==============================================================================
--- branches/release/libs/serialization/example/portable_binary_iarchive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/portable_binary_iarchive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define PORTABLE_BINARY_IARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/example/portable_binary_oarchive.hpp
==============================================================================
--- branches/release/libs/serialization/example/portable_binary_oarchive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/portable_binary_oarchive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define PORTABLE_BINARY_OARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/example/simple_log_archive.hpp
==============================================================================
--- branches/release/libs/serialization/example/simple_log_archive.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/example/simple_log_archive.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SIMPLE_LOG_ARCHIVE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/performance/xml/harness.hpp
==============================================================================
--- branches/release/libs/serialization/performance/xml/harness.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/performance/xml/harness.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -12,7 +12,7 @@
 #define BOOST_SERIALIZATION_XML_PERFORMANCE_HARNESS_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
   # pragma once
 #endif
 
Modified: branches/release/libs/serialization/performance/xml/macro.hpp
==============================================================================
--- branches/release/libs/serialization/performance/xml/macro.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/performance/xml/macro.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -11,7 +11,7 @@
 #if !defined(BOOST_SERIALIZATION_XML_PERFORMANCE_MACRO_HPP)
 #define BOOST_SERIALIZATION_XML_PERFORMANCE_MACRO_HPP
 
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
   #pragma once
 #endif
 
Modified: branches/release/libs/serialization/performance/xml/node.hpp
==============================================================================
--- branches/release/libs/serialization/performance/xml/node.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/performance/xml/node.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -11,7 +11,7 @@
 #if !defined(BOOST_SERIALIZATION_XML_PERFORMANCE_NODE_HPP)
 #define BOOST_SERIALIZATION_XML_PERFORMANCE_NODE_HPP
 
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
   #pragma once
 #endif
 
Modified: branches/release/libs/serialization/src/basic_archive.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_archive.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/src/basic_archive.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -74,7 +74,7 @@
 
 BOOST_ARCHIVE_DECL(library_version_type)
 BOOST_ARCHIVE_VERSION(){
-    return library_version_type(10);
+    return library_version_type(11);
 }
 
 } // namespace archive
Modified: branches/release/libs/serialization/src/basic_iarchive.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_iarchive.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/src/basic_iarchive.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -453,9 +453,9 @@
         }
         BOOST_ASSERT(NULL != bpis_ptr);
         class_id_type new_cid = register_type(bpis_ptr->get_basic_serializer());
+        BOOST_VERIFY(register_type(bpis_ptr->get_basic_serializer()) == cid);
         int i = cid;
         cobject_id_vector[i].bpis_ptr = bpis_ptr;
-        BOOST_ASSERT(new_cid == cid);
     }
     int i = cid;
     cobject_id & co = cobject_id_vector[i];
@@ -495,14 +495,16 @@
         // cyclic strucures
         object_id_vector.push_back(aobject(t, cid));
 
+        // remember that that the address of these elements could change
+        // when we make another call so don't use the address
         bpis_ptr->load_object_ptr(
-            ar, 
-            object_id_vector[ui].address, 
-            co.file_version
+            ar,
+            t,
+            m_pending.version
         );
-        t = object_id_vector[ui].address;
-        object_id_vector[ui].loaded_as_pointer = true;
         BOOST_ASSERT(NULL != t);
+        object_id_vector[ui].address = t;
+        object_id_vector[ui].loaded_as_pointer = true;
     }
 
     return bpis_ptr;
Modified: branches/release/libs/serialization/src/basic_serializer_map.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_serializer_map.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/src/basic_serializer_map.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -43,11 +43,12 @@
 BOOST_ARCHIVE_DECL(bool) 
 basic_serializer_map::insert(const basic_serializer * bs){
     // attempt to insert serializer into it's map
-    const std::pair<map_type::iterator, bool> result =
-        m_map.insert(bs);
     // the following is commented out - rather than being just
     // deleted as a reminder not to try this.
 
+    // const std::pair<map_type::iterator, bool> result =
+        m_map.insert(bs);
+
     // At first it seemed like a good idea.  It enforced the
     // idea that a type be exported from at most one code module
     // (DLL or mainline).  This would enforce a "one definition rule" 
Modified: branches/release/libs/serialization/src/shared_ptr_helper.cpp
==============================================================================
--- branches/release/libs/serialization/src/shared_ptr_helper.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/src/shared_ptr_helper.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -1,5 +1,5 @@
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/src/utf8_codecvt_facet.cpp
==============================================================================
--- branches/release/libs/serialization/src/utf8_codecvt_facet.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/src/utf8_codecvt_facet.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -7,15 +7,14 @@
 #ifdef BOOST_NO_STD_WSTREAMBUF
 #error "wide char i/o not supported on this platform"
 #else
-
-#define BOOST_UTF8_BEGIN_NAMESPACE \
-     namespace boost { namespace archive { namespace detail {
-#define BOOST_UTF8_DECL
-#define BOOST_UTF8_END_NAMESPACE }}}
-#include <boost/detail/utf8_codecvt_facet.ipp>
-#undef BOOST_UTF8_END_NAMESPACE
-#undef BOOST_UTF8_DECL
-#undef BOOST_UTF8_BEGIN_NAMESPACE
-
+    #ifdef BOOST_NO_CXX11_HDR_CODECVT
+        #define BOOST_UTF8_BEGIN_NAMESPACE \
+             namespace boost { namespace archive { namespace detail {
+        #define BOOST_UTF8_DECL
+        #define BOOST_UTF8_END_NAMESPACE }}}
+        #include <boost/detail/utf8_codecvt_facet.ipp>
+        #undef BOOST_UTF8_END_NAMESPACE
+        #undef BOOST_UTF8_DECL
+        #undef BOOST_UTF8_BEGIN_NAMESPACE
+    #endif // BOOST_NO_CXX11_HDR_CODECVT
 #endif // BOOST_NO_STD_WSTREAMBUF
-
Modified: branches/release/libs/serialization/test/A.cpp
==============================================================================
--- branches/release/libs/serialization/test/A.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/A.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -12,6 +12,7 @@
 #include <cstdlib> // rand()
 #include <cmath>   // fabs()
 #include <cstddef> // size_t
+#include <boost/math/special_functions/next.hpp>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -148,13 +149,9 @@
         return false; 
     if(v != rhs.v)
         return false; 
-    if(w == 0 && std::fabs(rhs.w) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(w, rhs.w)) > 1)
         return false;
-    if(std::fabs(rhs.w/w - 1.0) > std::numeric_limits<float>::epsilon())
-        return false;
-    if(x == 0 && std::fabs(rhs.x - x) > std::numeric_limits<float>::epsilon())
-        return false;
-    if(std::fabs(rhs.x/x - 1.0) > std::numeric_limits<float>::epsilon())
+    if(std::abs( boost::math::float_distance(x, rhs.x)) > 1)
         return false;
     if(0 != y.compare(rhs.y))
         return false;
Modified: branches/release/libs/serialization/test/A.hpp
==============================================================================
--- branches/release/libs/serialization/test/A.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/A.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_A_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/B.hpp
==============================================================================
--- branches/release/libs/serialization/test/B.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/B.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_B_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
@@ -18,6 +18,7 @@
 
 #include <cstdlib> // for rand()
 #include <cmath>
+#include <boost/math/special_functions/next.hpp>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -67,6 +68,7 @@
             ar >> BOOST_SERIALIZATION_NVP(v);
             ar >> BOOST_SERIALIZATION_NVP(w);
             ar >> BOOST_SERIALIZATION_NVP(x);
+            break;
         default:
             break;
         }
@@ -104,9 +106,9 @@
         && s == rhs.s 
         && t == rhs.t 
         && u == rhs.u 
-        && v == rhs.v 
-        && std::fabs(w - rhs.w) <= std::numeric_limits<float>::round_error()
-        && std::fabs(x - rhs.x) <= std::numeric_limits<float>::round_error()
+        && v == rhs.v
+        && std::abs( boost::math::float_distance(w, rhs.w)) < 2
+        && std::abs( boost::math::float_distance(x, rhs.x)) < 2
     ;
 }
 
Modified: branches/release/libs/serialization/test/C.hpp
==============================================================================
--- branches/release/libs/serialization/test/C.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/C.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_A_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/D.hpp
==============================================================================
--- branches/release/libs/serialization/test/D.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/D.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_D_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/J.hpp
==============================================================================
--- branches/release/libs/serialization/test/J.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/J.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_J_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/base.hpp
==============================================================================
--- branches/release/libs/serialization/test/base.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/base.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_BASE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/derived2.hpp
==============================================================================
--- branches/release/libs/serialization/test/derived2.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/derived2.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_SERIALIZATION_TEST_DERIVED2_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/polymorphic_base.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_base.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/polymorphic_base.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define POLYMORPHIC_BASE_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/polymorphic_derived1.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived1.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/polymorphic_derived1.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define POLYMORPHIC_DERIVED1_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/polymorphic_derived2.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived2.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/polymorphic_derived2.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define POLYMORPHIC_DERIVED2_HPP
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
Modified: branches/release/libs/serialization/test/test_array.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_array.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_array.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -10,7 +10,7 @@
 
 #include <cstddef>
 #include <fstream>
-
+#include <algorithm> // equal
 #include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -18,7 +18,7 @@
     using ::remove;
 }
 #endif
-
+#include <boost/foreach.hpp>
 #include "test_tools.hpp"
 #include <boost/detail/no_exceptions_support.hpp>
 #include <boost/archive/archive_exception.hpp>
@@ -27,34 +27,13 @@
 #include "A.hpp"
 #include "A.ipp"
 
-struct array_equal_to //: public std::binary_function<T, T, bool>
-{
-template<class T, class U>
-    bool operator()(const T & _Left, const U & _Right) const
-    {
-        // consider alignment
-        int count_left = sizeof(_Left) /    (
-            static_cast<const char *>(static_cast<const void *>(&_Left[1])) 
-            - static_cast<const char *>(static_cast<const void *>(&_Left[0]))
-        );
-        int count_right = sizeof(_Right) /  (
-            static_cast<const char *>(static_cast<const void *>(&_Right[1])) 
-            - static_cast<const char *>(static_cast<const void *>(&_Right[0]))
-        );
-        if(count_right != count_left)
-            return false;
-        while(count_left-- > 0){
-            if(_Left[count_left] == _Right[count_left])
-                continue;
-            return false;
-        }
-        return true;
-    }
-};
+template<class T, unsigned int N>
+bool deep_compare(const T (& lhs)[N], const T (& rhs)[N]){
+    return std::equal(&lhs[0], &lhs[N], &rhs[0]);
+}
 
 template <class T>
-int test_array(T)
-{
+int test_array(){
     const char * testfile = boost::archive::tmpnam(NULL);
     BOOST_REQUIRE(NULL != testfile);
 
@@ -79,11 +58,10 @@
         ia >> boost::serialization::make_nvp("b_array", b_array1);
         ia >> boost::serialization::make_nvp("c_array", c_array1);
 
-        array_equal_to/*<A[10]>*/ Compare;
-        BOOST_CHECK(Compare(a_array, a_array1));
-        BOOST_CHECK(Compare(b_array[0], b_array1[0]));
-        BOOST_CHECK(Compare(b_array[1], b_array1[1]));
-        BOOST_CHECK(Compare(c_array, c_array1));
+        BOOST_CHECK(deep_compare(a_array,a_array1));
+        BOOST_CHECK(b_array[0][0] == b_array1[0][0]);
+        BOOST_CHECK(b_array[1][0] == b_array1[1][0]);
+        BOOST_CHECK(c_array == c_array1);
     }
     {
         T a_array1[9];
@@ -114,11 +92,11 @@
 
 int test_main( int /* argc */, char* /* argv */[] )
 {
-   int res = test_array(A());
+    int res = test_array<A>();
     // test an int array for which optimized versions should be available
-   if (res == EXIT_SUCCESS)
-     res = test_array(0);  
-   return res;
+    if (res == EXIT_SUCCESS)
+        res = test_array<int>();  
+    return res;
 }
 
 // EOF
Modified: branches/release/libs/serialization/test/test_codecvt_null.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_codecvt_null.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_codecvt_null.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -10,7 +10,7 @@
 // which use wchar_t as 2 byte objects will emit warnings.  These should be
 // ignored.
 
-#include <algorithm>
+#include <algorithm> // std::copy
 #include <fstream>
 #include <iostream>
 #include <iterator>
Modified: branches/release/libs/serialization/test/test_complex.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_complex.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_complex.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -15,9 +15,10 @@
 #include <cstdio> // remove
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
-#include <boost/limits.hpp>
+#include <boost/math/special_functions/next.hpp>
 
 #if defined(BOOST_NO_STDC_NAMESPACE)
+#include <boost/limits.hpp>
 namespace std{
     using ::rand; 
     using ::remove;
@@ -30,15 +31,15 @@
 }
 #endif
 
-#include <boost/config.hpp>
-#include <boost/limits.hpp> 
-
 #include "test_tools.hpp"
+
 #include <boost/preprocessor/stringize.hpp>
 #include BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST)
 
 #include <boost/serialization/complex.hpp>
 
+#include <iostream>
+
 int test_main( int /* argc */, char* /* argv */[] )
 {
     const char * testfile = boost::archive::tmpnam(NULL);
@@ -46,12 +47,12 @@
 
     // test array of objects
     std::complex<float> a(
-        static_cast<float>(std::rand()),
-        static_cast<float>(std::rand())
+        static_cast<float>(std::rand()) / static_cast<float>(std::rand()),
+        static_cast<float>(std::rand()) / static_cast<float>(std::rand()) 
     );
     std::complex<double> b(
-        static_cast<double>(std::rand()),
-        static_cast<double>(std::rand())
+        static_cast<double>(std::rand()) / static_cast<double>(std::rand()),
+        static_cast<double>(std::rand()) / static_cast<double>(std::rand())
     );
     {   
         test_ostream os(testfile, TEST_STREAM_FLAGS);
@@ -68,8 +69,14 @@
         ia >> boost::serialization::make_nvp("adoublecomplex", b1);
     }
 
-    BOOST_CHECK(std::abs(a-a1) <= 2.*std::numeric_limits<float>::round_error());
-    BOOST_CHECK(std::abs(b-b1) <= 2.*std::numeric_limits<double>::round_error());
+    std::cerr << "a.real()-a1a.real() distance = " << std::abs( boost::math::float_distance(a.real(), a1.real())) << std::endl;
+    BOOST_CHECK(std::abs(boost::math::float_distance(a.real(), a1.real())) < 2);
+    std::cerr << "a.imag() - a1a.imag() distance = " << std::abs( boost::math::float_distance(a.imag(), a1.imag())) << std::endl;
+    BOOST_CHECK(std::abs(boost::math::float_distance(a.imag(), a1.imag())) < 2);
+    std::cerr << "b.real() - b1.real() distance = " << std::abs( boost::math::float_distance(b.real(), b1.real())) << std::endl;
+    BOOST_CHECK(std::abs(boost::math::float_distance(b.real(), b1.real())) < 2);
+    std::cerr << "b.imag() - b1.imag() distance = " << std::abs( boost::math::float_distance(b.imag(), b1.imag())) << std::endl;
+    BOOST_CHECK(std::abs(boost::math::float_distance(b.imag(), b1.imag())) < 2);
 
     std::remove(testfile);
     return EXIT_SUCCESS;
Modified: branches/release/libs/serialization/test/test_decl.hpp
==============================================================================
--- branches/release/libs/serialization/test/test_decl.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_decl.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -2,7 +2,7 @@
 #define BOOST_TEST_DECL_HPP 
 
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif 
 
Modified: branches/release/libs/serialization/test/test_delete_pointer.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_delete_pointer.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_delete_pointer.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -24,7 +24,6 @@
 
 #include <boost/serialization/nvp.hpp>
 #include <boost/serialization/split_member.hpp>
-#include <boost/serialization/vector.hpp>
 
 //A holds a pointer to another A, but doesn't own the pointer.
 //objCount
@@ -41,89 +40,85 @@
     {
         static int i = 0;
         ar >> BOOST_SERIALIZATION_NVP(next_);
-        if(++i == 3)
-            boost::serialization::throw_exception(boost::archive::archive_exception(
-                boost::archive::archive_exception::no_exception
-            ));
+        //if(++i == 3)
+        //    boost::serialization::throw_exception(boost::archive::archive_exception(
+        //        boost::archive::archive_exception::no_exception
+        //    ));
+        ++loadcount;
     }
     BOOST_SERIALIZATION_SPLIT_MEMBER()
 public:
     A()
     {
+        if(test && objcount == 3)
+            boost::serialization::throw_exception(boost::archive::archive_exception(
+                boost::archive::archive_exception::no_exception
+            ));
         next_ = 0;
         ++objcount;
     }
-    A(const A& a)
-    {
-        next_ = a.next_; ++objcount;
-    }
-    ~A()
-    {
+    ~A(){
+        delete next_;
         --objcount;
     }
     A* next_;
     static int objcount;
+    static bool test;
+    static int loadcount;
 };
 
 
 int A::objcount = 0;
+int A::loadcount = 0;
+bool A::test = false;
 
 int
 test_main( int /* argc */, char* /* argv */[] )
 {
-    std::vector<A*> vec;
-    A* a = new A;
-    a->next_ = 0;
-    vec.push_back(a);
 
     //fill the vector with chained A's. The vector is assumed
     //to own the objects - we will destroy the objects through this vector.
+
+    A * head = new A;
+    A* last = head;
     unsigned int i;
-    for(i   = 1; i < 10; ++i)
+    for(i = 1; i < 9; ++i)
     {
-        a = new A;
-        vec[i - 1]->next_ = a;
-        a->next_ = 0;
-        vec.push_back(a);
+        A *a = new A;
+        last->next_ = a;
+        last = a;
     }
 
     const char * testfile = boost::archive::tmpnam(0);
     BOOST_REQUIRE(NULL != testfile);
 
-    //output the vector
+    //output the list
     {
         test_ostream os(testfile, TEST_STREAM_FLAGS);
         test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
-        oa << BOOST_SERIALIZATION_NVP(vec);
+        oa << BOOST_SERIALIZATION_NVP(head);
     }
 
-    //erase the objects
-    for(i = 0; i < vec.size(); ++i)
-        delete vec[i];
-    vec.clear();
+    delete head;
+    BOOST_CHECK(A::objcount == 0);
 
-    //read the vector back
+    head = NULL;
+    A::test = true;
+    //read the list back
     {
         test_istream is(testfile, TEST_STREAM_FLAGS);
         test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
         BOOST_TRY {
-            ia >> BOOST_SERIALIZATION_NVP(vec);
+            ia >> BOOST_SERIALIZATION_NVP(head);
         }
         BOOST_CATCH (...){
             ia.delete_created_pointers();
-            vec.clear();
         }
         BOOST_CATCH_END
     }
 
-    //delete the objects
-    for(i = 0; i < vec.size(); ++i)
-        delete vec[i];
-    vec.clear();
-
     //identify the leaks
-    BOOST_CHECK(A::objcount == 0);
+    BOOST_CHECK(A::loadcount == 0);
     std::remove(testfile);
     return EXIT_SUCCESS;
 }
-
Modified: branches/release/libs/serialization/test/test_iterators.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_iterators.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_iterators.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#include <algorithm>
+#include <algorithm> // std::copy
 #include <vector>
 #include <cstdlib> // for rand
 #include <functional>
Modified: branches/release/libs/serialization/test/test_map.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_map.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_map.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -8,7 +8,7 @@
 
 // should pass compilation and execution
 
-#include <algorithm>
+#include <algorithm> // std::copy
 #include <vector>
 #include <fstream>
 #include <cstddef> // size_t, NULL
@@ -57,8 +57,6 @@
     }
 };  
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(random_key)
-
 void
 test_map(){
     const char * testfile = boost::archive::tmpnam(NULL);
Modified: branches/release/libs/serialization/test/test_non_default_ctor.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_non_default_ctor.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_non_default_ctor.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -20,6 +20,7 @@
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/limits.hpp>
+#include <boost/math/special_functions/next.hpp>
 
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
@@ -100,8 +101,8 @@
         && t == rhs.t 
         && u == rhs.u 
         && v == rhs.v 
-        && std::fabs(w - rhs.w) <= std::numeric_limits<float>::round_error()
-        && std::fabs(x - rhs.x) <= std::numeric_limits<float>::round_error()
+        && std::abs( boost::math::float_distance(w, rhs.w)) < 2
+        && std::abs( boost::math::float_distance(x, rhs.x)) < 2
     ;
 }
 
@@ -115,10 +116,10 @@
         return t < rhs.u; 
     if(! (v == rhs.v) )
         return t < rhs.v;
-    if(! (std::fabs(w - rhs.w) < std::numeric_limits<float>::round_error() ) )
-        return t < rhs.w; 
-    if(! (std::fabs(x - rhs.x) < std::numeric_limits<float>::round_error() ) )
-        return t < rhs.x;
+    if(std::abs( boost::math::float_distance(w, rhs.w)) > 1)
+        return false;
+    if(std::abs( boost::math::float_distance(x, rhs.x)) > 1)
+        return false;
     return false;
 }
 
Modified: branches/release/libs/serialization/test/test_non_intrusive.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_non_intrusive.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_non_intrusive.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -19,6 +19,7 @@
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/limits.hpp>
+#include <boost/math/special_functions/next.hpp>
 
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
@@ -68,8 +69,8 @@
         && t == rhs.t 
         && u == rhs.u 
         && v == rhs.v 
-        && std::fabs(w - rhs.w) <= std::numeric_limits<float>::round_error()
-        && std::fabs(x - rhs.x) <= std::numeric_limits<float>::round_error()
+        && std::abs( boost::math::float_distance(w, rhs.w)) < 2
+        && std::abs( boost::math::float_distance(x, rhs.x)) < 2
     ;
 }
 
@@ -83,10 +84,10 @@
         return t < rhs.u; 
     if(! (v == rhs.v) )
         return t < rhs.v;
-    if(! (std::fabs(w - rhs.w) < std::numeric_limits<float>::round_error() ) )
-        return t < rhs.w; 
-    if(! (std::fabs(x - rhs.x) < std::numeric_limits<float>::round_error() ) )
-        return t < rhs.x;
+    if(std::abs( boost::math::float_distance(w, rhs.w)) > 1)
+        return false;
+    if(std::abs( boost::math::float_distance(x, rhs.x)) > 1)
+        return false;
     return false;
 }
 
Modified: branches/release/libs/serialization/test/test_set.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_set.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_set.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -12,7 +12,7 @@
 #include <cstdio> // remove
 #include <fstream>
 
-#include <algorithm>
+#include <algorithm> // std::copy
 #include <vector>
 
 #include <boost/config.hpp>
Modified: branches/release/libs/serialization/test/test_shared_ptr.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_shared_ptr.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_shared_ptr.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -18,7 +18,6 @@
     using ::remove;
 }
 #endif
-#include <boost/type_traits/broken_compiler_spec.hpp>
 
 #include <boost/serialization/shared_ptr.hpp>
 #include <boost/serialization/weak_ptr.hpp>
Modified: branches/release/libs/serialization/test/test_shared_ptr_132.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_shared_ptr_132.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_shared_ptr_132.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -30,7 +30,6 @@
 
 #include <boost/serialization/nvp.hpp>
 #include <boost/serialization/export.hpp>
-#include <boost/type_traits/broken_compiler_spec.hpp>
 
 // This is a simple class.  It contains a counter of the number
 // of objects of this class which have been instantiated.
@@ -57,7 +56,6 @@
     virtual ~A(){--count;}   // default destructor
 };
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(A)
 BOOST_SERIALIZATION_SHARED_PTR(A)
 
 // B is a subclass of A
@@ -83,7 +81,6 @@
 
 // B needs to be exported because its serialized via a base class pointer
 BOOST_SHARED_POINTER_EXPORT(B)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(B)
 BOOST_SERIALIZATION_SHARED_PTR(B)
 
 int A::count = 0;
Modified: branches/release/libs/serialization/test/test_shared_ptr_multi_base.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_shared_ptr_multi_base.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_shared_ptr_multi_base.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -18,7 +18,6 @@
     using ::remove;
 }
 #endif
-#include <boost/type_traits/broken_compiler_spec.hpp>
 
 #include <boost/serialization/shared_ptr.hpp>
 #include <boost/serialization/weak_ptr.hpp>
Modified: branches/release/libs/serialization/test/test_simple_class.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_simple_class.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_simple_class.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -14,6 +14,7 @@
 #include <cstdio> // remove
 #include <fstream>
 #include <cmath>
+#include <boost/math/special_functions/next.hpp>
 
 #include <boost/config.hpp>
 
@@ -50,19 +51,8 @@
     BOOST_CHECK_EQUAL(u, rhs.u);
     BOOST_CHECK_EQUAL(v, rhs.v);
     BOOST_CHECK_EQUAL(l, rhs.l);
-    BOOST_CHECK(!(
-        w == 0 
-        && std::fabs(rhs.w) > std::numeric_limits<float>::epsilon()
-    ));
-    BOOST_CHECK(!(
-        std::fabs(rhs.w/w - 1.0) > std::numeric_limits<float>::epsilon()
-    ));
-    BOOST_CHECK(!(
-        x == 0 && std::fabs(rhs.x - x) > std::numeric_limits<float>::epsilon()
-    ));
-    BOOST_CHECK(!(
-        std::fabs(rhs.x/x - 1.0) > std::numeric_limits<float>::epsilon()
-    ));
+    BOOST_CHECK(std::abs( boost::math::float_distance(w, rhs.w)) < 2);
+    BOOST_CHECK(std::abs( boost::math::float_distance(x, rhs.x)) < 2);
     BOOST_CHECK(!(0 != y.compare(rhs.y)));
     #ifndef BOOST_NO_STD_WSTRING
     BOOST_CHECK(!(0 != z.compare(rhs.z)));
Modified: branches/release/libs/serialization/test/test_smart_cast.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_smart_cast.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_smart_cast.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -39,10 +39,6 @@
 #pragma warning(pop)
 #endif
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(Base1)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(Base2)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(Derived)
-
 // if compiler doesn't support TPS, the smart_cast syntax doesn't
 // work for references.  One has to use the smart_cast_reference
 // syntax (tested below ) instead.
@@ -151,10 +147,6 @@
 #pragma warning(pop)
 #endif
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(VBase1)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(VBase2)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(VDerived)
-
 // see above
 
 void test_dynamic_reference_cast_2(){
Modified: branches/release/libs/serialization/test/test_tools.hpp
==============================================================================
--- branches/release/libs/serialization/test/test_tools.hpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_tools.hpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -1,14 +1,14 @@
 #ifndef BOOST_SERIALIZATION_TEST_TOOLS_HPP
 #define BOOST_SERIALIZATION_TEST_TOOLS_HPP
 
-#define BOOST_FILESYSTEM_VERSION 3
-#include <boost/filesystem.hpp>
-
 // MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
 # pragma once
 #endif
 
+#define BOOST_FILESYSTEM_VERSION 3
+#include <boost/filesystem/operations.hpp> // unique_path
+
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 // test_tools.hpp
 //
@@ -20,10 +20,10 @@
 //  See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstddef> // size_t
+#include <boost/config.hpp>
 #ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE
     #include <exception>
 #endif
-#include <boost/config.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
 
 #if defined(UNDER_CE)
@@ -63,9 +63,9 @@
 #include <direct.h>
 #include <boost/archive/tmpdir.hpp>
 
-#if defined(__COMO__)
+//#if defined(__COMO__)
     #define chdir _chdir
-#endif
+//#endif  // defined win32
 
 #if defined(NDEBUG) && defined(__BORLANDC__)
     #define STRCPY strcpy
Modified: branches/release/libs/serialization/test/test_traits_fail.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_traits_fail.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_traits_fail.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -34,7 +34,7 @@
 int
 test_main( int /* argc */, char* /* argv */[] )
 {
-    return boost::exit_failure;
+    return EXIT_SUCCESS;
 }
 
 // EOF
Modified: branches/release/libs/serialization/test/test_utf8_codecvt.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_utf8_codecvt.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_utf8_codecvt.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#include <algorithm>
+#include <algorithm> // std::copy
 #include <fstream>
 #include <iostream>
 #include <iterator>
@@ -42,7 +42,15 @@
 #include "test_tools.hpp"
 
 #include <boost/archive/add_facet.hpp>
-#include <boost/archive/detail/utf8_codecvt_facet.hpp>
+
+#ifndef BOOST_NO_CXX11_HDR_CODECVT
+    #include <codecvt>
+    namespace boost { namespace archive { namespace detail {
+        typedef std::codecvt_utf8<wchar_t> utf8_codecvt_facet;
+    } } }
+#else
+    #include <boost/archive/detail/utf8_codecvt_facet.hpp>
+#endif
 
 template<std::size_t s>
 struct test_data
Modified: branches/release/libs/serialization/test/test_variant.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_variant.cpp	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/test/test_variant.cpp	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -18,8 +18,9 @@
 #include <cstddef> // NULL
 #include <cstdio> // remove
 #include <fstream>
-#include <cmath> // for fabs()
 #include <boost/config.hpp>
+#include <cmath> // for fabs()
+#include <boost/math/special_functions/next.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{ 
     using ::remove;
@@ -77,11 +78,11 @@
 
     bool operator()( const float & lhs, const float & rhs ) const
     {
-        return std::fabs(lhs- rhs) < std::numeric_limits<float>::round_error();
+        return std::abs( boost::math::float_distance(lhs, rhs)) < 2;
     }
     bool operator()( const double & lhs, const double & rhs ) const
     {
-        return std::fabs(lhs - rhs) < std::numeric_limits<float>::round_error();
+        return std::abs( boost::math::float_distance(lhs, rhs)) < 2;
     }
 };
 
Modified: branches/release/libs/serialization/util/test.jam
==============================================================================
--- branches/release/libs/serialization/util/test.jam	Sat Nov 16 15:13:24 2013	(r86726)
+++ branches/release/libs/serialization/util/test.jam	2013-11-16 15:13:39 EST (Sat, 16 Nov 2013)	(r86727)
@@ -46,6 +46,7 @@
             <toolset>msvc:<cxxflags>"-wd4996"
             # toolset optimizations
             <toolset>gcc:<cxxflags>"-ftemplate-depth-255"
+            <toolset>clang:<cxxflags>"-ftemplate-depth-255"
             <toolset>msvc:<cxxflags>"-Gy"
             $(requirements)
         : # test name