[Bf-committers] Re: MEM_CacheLimiter breaks msvc6 compile unrepairable

bjornmose bjornmose at gmx.net
Wed Feb 8 22:21:53 CET 2006

Peter Schlaile wrote:
> Hi Ole,
>>i tried for a while to get over STL problems arising on msvc6 with this new
>>Finally i
>>So, was it decided to drop msvc6 as a supported build system?
> Nope. I used a C++ compiler to develop it, not MSVC-6 ;-)
> Seriously: Have you tried removing the rebind-code completely from the
> MEM_Allocator.h-file?
> If this works for you, could you just mail to me a preprocessor-variable
> which enables me to check for MS-VC6?
> Or just try to add this:
> #ifndef __MSVC6__whatever_you_have_to_test_to_detect_msvc6__
> 	template<...> rebind()
> #endif
> Also could you just mail the compiler error messages to me?
> Greetings,
> Peter

ok tried commenting out that rebind stuff,
but as expected instation of

typedef std::list<MEM_CacheLimiterHandleCClass*,
		  MEM_Allocator<MEM_CacheLimiterHandleCClass* > > list_t;

a few lines later :
	list_t cclass_list;
bails out with the meaningfull error message: (me loves msvc6 STL 
support for that)

C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\list(130) : error 
C2143: syntax error : missing ';' before '<end Parse>'
         C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\list(129) : 
while compiling class-template member function '__thiscall 
std::list<class MEM_CacheLimiterHandleCClass *,struct 
MEM_Allocator<class MEM_CacheLimiterHandleCClass *> >::std::list<c
lass MEM_CacheLimiterHandleCClass *,struct MEM_Allocator<class 
MEM_CacheLimiterHandleCClass *> >(const struct MEM_Allocator<class 
MEM_CacheLimiterHandleCClass *> &)'
Error executing cl.exe.

in <list>
	explicit list(const _A& _Al = _A())
here-->		: allocator(_Al),
		_Head(_Buynode()), _Size(0) {}

but like i said expected since


".. This means you cannot write an allocator that uses any pointer or 
reference types that differ from those used by allocator, ..."

and i think that's exactly what
typedef std::list<MEM_CacheLimiterHandleCClass*,
		  MEM_Allocator<MEM_CacheLimiterHandleCClass* > > list_t;
is supposed to do.

this aticle
also mentions STLport, but i read it as:
there are some cumbersome workarounds that may work in some special cases.

to resume my point of view:
- we know that STL implementation in msvc6 is poor ( to use friendly words )
- if we decide to use C++/STL with bells and whistles we might be better 
off ditching mcvc6
- which would be a pitty for me ( and may be some others ) owning a 
legal copy of that 'pile of garbage'
- but well, times are changing and MS has quit msvc6 support

again, i may be totally wrong .... sigh ....


P.S. Peter, we're proud of you using a real C++ compiler ... btw on 
windows i have cygwin with gcc and the free vc7 compiler running too. I 
can boot to linux and complile there. So to me it's a esoteric self 
punishment to keep blender compiling on msvc6. ( hope you smell the 
sarcams in there )

More information about the Bf-committers mailing list