boost_1_31_0 transform_iterator and VC71 ICE - FYI

I've begun converting my projects to using the new iterator_adaptor's. I've
encountered an ICE with the code below. I've tried to isolate it to a simple
console app but of course, the problem does not occur there. The following
distillation does ICE, when compiled with the /Gm (Enable Minimal Rebuild)
flag, but compiles and runs fine w/out it. This is an MFC multithreaded lib
project NOT using precompiled headers. I'll continue to try to isolate the
conditions.Any thoughts on how to isolate the problem?
VC7.1 error message:
C:\boost\boost_1_31_0\boost\mpl\aux_\preprocessed\plain\apply.hpp(50) :
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 2701)
#include <string>
#include <algorithm>
#include <vector>
#include <numeric>
#include

Jason Shirk of Microsoft says:
This is a likely known issue in VC7.1, I'll have our team double check
to make sure. IIRC, the only simple workaround is to not use /Gm.
If it is the same issue, it has been fixed for the next release.
--
Jason Shirk
VC++ Compiler Team
----------
"Jeff Flinn"
I've begun converting my projects to using the new iterator_adaptor's. I've encountered an ICE with the code below. I've tried to isolate it to a simple console app but of course, the problem does not occur there. The following distillation does ICE, when compiled with the /Gm (Enable Minimal Rebuild) flag, but compiles and runs fine w/out it. This is an MFC multithreaded lib project NOT using precompiled headers. I'll continue to try to isolate the conditions.Any thoughts on how to isolate the problem?
VC7.1 error message:
C:\boost\boost_1_31_0\boost\mpl\aux_\preprocessed\plain\apply.hpp(50) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 2701)
#include <string> #include <algorithm> #include <vector> #include <numeric> #include
#include #include typedef std::pair
CSize; CSize SizeFromString( const std::string& aString ){ return CSize(1,2); } CSize XUnionStacked ( const CSize& aSz1, const CSize& aSz2 ){ return CSize(1,2); }
CSize XSizeMultiLine( const std::string& aString, const CSize& aSize ) { CSize lSize(0,0);
boost::function1
lSizeFromStringFnc = boost::bind( SizeFromString, _1 ); boost::function2 lSizeUnionStackedFnc = boost::bind( XUnionStacked, _1, _2 ); std::vectorstd::string lStrings(10);
lSize = std::accumulate ( boost::make_transform_iterator( lStrings.begin(), lSizeFromStringFnc ) , boost::make_transform_iterator( lStrings. end(), lSizeFromStringFnc ) , lSize , lSizeUnionStackedFnc );
return lSize; }
Thanks,
Jeff F
-- Dave Abrahams Boost Consulting www.boost-consulting.com
participants (2)
-
David Abrahams
-
Jeff Flinn