[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
>>classes.
>>
>>Finally i
>>found:
>>
>>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/HTML/MEMORY_allocator.asp
>>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)
MEM_CacheLimiterC-Api.cpp
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
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/HTML/MEMORY_allocator.asp
states:
".. 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.
stivs,
this aticle
http://www.codeguru.com/Cpp/Cpp/cpp_mfc/stl/article.php/c4079
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 ....
ole
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