[rc_1_34_0][serialization][multi_index][vc-6_5] ICEs due to recent commits

Hello, Commits made to B.S at RC_1_34_0 as of yesterday cause multi_index tests (all of them, not only those which are serialization- related) to fail in MSVC 6.5 with: ...\boost/serialization/traits.hpp(45) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1794) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information See for instance http://tinyurl.com/lwwg9 The problem is obscure: the changes to B.S are admittedly trivial (some #includes added in place of previous foward declarations), but somehow MSVC 6.5 is not liking them. Seems also like some contextual complexity is needed to trigger the ICE, as B.S tests themselves do work OK. I've reduced the ICE to a bunch of boost #includes, but what I was left with shed no light to the problem :( On the brighter side, reverting just one file, namely boost/serialization/level.hpp to its prior state (v. 1.9) does avoid the ICE. May I ask that this reversion be done to boost/serialization/level.hpp at RC_1_34_0? Thank you, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

Damn !!! - I made this change to address a problem whereby including just one header - version.hpp - failed for lack of basic traits. After making the changes, I restest the whole serialization libray - carpet bombing mode with no new problems - then I checked it in. So Joaquín Mª López Muñoz wrote:
On the brighter side, reverting just one file, namely boost/serialization/level.hpp to its prior state (v. 1.9) does avoid the ICE. May I ask that this reversion be done to boost/serialization/level.hpp at RC_1_34_0?
ok Robert Ramey

Robert Ramey wrote:
Damn !!! - I made this change to address a problem whereby including just one header - version.hpp - failed for lack of basic traits. After making the changes, I restest the whole serialization libray - carpet bombing mode with no new problems - then I checked it in.
VC6 has problems with integer template arguments, but MPL has a nice workaround. A while back, Aleksey Gurtovoy wrote:
non-type integer template parameters are generally "unsafe" on MSVC 6.x:
namespace std { template< typename Char > struct string; }
void foo(std::string<char>);
template< int C > struct arg; // ICE here
MPL avoids the problem internally by using the following workaround:
#include <boost/mpl/aux_/nttp_decl.hpp>
...
template< BOOST_MPL_AUX_NTTP_DECL(int, C) > struct arg; // OK
participants (3)
-
Daniel James
-
Joaquín Mª López Muñoz
-
Robert Ramey