$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2008-01-15 07:00:12
Author: danieljames
Date: 2008-01-15 07:00:11 EST (Tue, 15 Jan 2008)
New Revision: 42791
URL: http://svn.boost.org/trac/boost/changeset/42791
Log:
Workarounds on top of workarounds. Avoid an ETI bug.
Text files modified: 
   branches/unordered/trunk/libs/unordered/test/objects/memory.hpp |    20 +++++++++++++++++---                    
   1 files changed, 17 insertions(+), 3 deletions(-)
Modified: branches/unordered/trunk/libs/unordered/test/objects/memory.hpp
==============================================================================
--- branches/unordered/trunk/libs/unordered/test/objects/memory.hpp	(original)
+++ branches/unordered/trunk/libs/unordered/test/objects/memory.hpp	2008-01-15 07:00:11 EST (Tue, 15 Jan 2008)
@@ -11,6 +11,7 @@
 #include <boost/mpl/apply.hpp>
 #include <boost/assert.hpp>
 #include <boost/unordered/detail/allocator.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
 #include "../helpers/test.hpp"
 
 namespace test
@@ -57,15 +58,28 @@
             }
         };
 
+        template <class Alloc>
+        struct allocator_memory_type_gen {
+            typedef std::map<memory_area, memory_track, memory_area_compare,
+                Alloc> type;
+        };
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+        template <>
+        struct allocator_memory_type_gen<int> {
+            typedef std::map<memory_area, memory_track, memory_area_compare> type;
+        };
+#endif
+
         template <class Alloc = std::allocator<int> >
         struct memory_tracker {
             typedef BOOST_DEDUCED_TYPENAME
                 boost::unordered_detail::rebind_wrap<Alloc,
                     std::pair<memory_area const, memory_track> >::type
-                allocator;
+                allocator_type;
 
-            typedef std::map<memory_area, memory_track, memory_area_compare,
-                allocator> allocated_memory_type;
+            typedef BOOST_DEDUCED_TYPENAME allocator_memory_type_gen<allocator_type>::type
+                allocated_memory_type;
 
             allocated_memory_type allocated_memory;
             unsigned int count_allocators;