$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Thomas Klimpel (klimpel_at_[hidden])
Date: 2005-07-12 11:05:06
Hello,
 
The Boost Multi_Array library produces some 64-bit related warnings when
used with Visual C++.NET. 
It seems to me that these warnings are valid and correspond to real
64-bit problems.
To get rid of these annoying warnings, I have fixed two minor
inconsistencies in multi_array/iterator.hpp and
multi_array/multi_array_ref.hpp, but that was not enough. 
I also had to change the definition of boost::detail::multi_array::index
in multi_array/types.hpp from "typedef int index;" to "typedef
std::ptrdiff_t index;". There might be better solutions, but it was the
best I could think of, because std::ptrdiff_t is a signed type and will
adapt to a 64-bit environment.
 
 
 
 
Index: multi_array/iterator.hpp
===================================================================
--- multi_array/iterator.hpp (Revision 1040)
+++ multi_array/iterator.hpp (Arbeitskopie)
@@ -98,7 +98,7 @@
 
   array_iterator() {}
 
-  array_iterator(int idx, TPtr base, const size_type* extents,
+  array_iterator(index idx, TPtr base, const size_type* extents,
                 const index* strides,
                 const index* index_base) :
     idx_(idx), base_(base), extents_(extents),
Index: multi_array/types.hpp
===================================================================
--- multi_array/types.hpp    (Revision 1040)
+++ multi_array/types.hpp    (Arbeitskopie)
@@ -26,7 +26,7 @@
 
 // needed typedefs
 typedef std::size_t size_type;
-typedef int index;
+typedef std::ptrdiff_t index;
 
 } // namespace multi_array
 } // namespace detail
Index: multi_array/multi_array_ref.hpp
===================================================================
--- multi_array/multi_array_ref.hpp (Revision 1040)
+++ multi_array/multi_array_ref.hpp (Arbeitskopie)
@@ -389,7 +389,7 @@
 
     // Calculate the array size
     num_elements_ =
std::accumulate(extent_list_.begin(),extent_list_.end(),
-                            1,std::multiplies<index>());
+                            size_type(1),std::multiplies<size_type>());
 #if 0
     assert(num_elements_ != 0);
 #endif