| Thread overview | |||||||
|---|---|---|---|---|---|---|---|
|
August 15, 2003 allocators and the vc6-stl | ||||
|---|---|---|---|---|
| ||||
Hi! I was just trying to use the stlsoft::malloc_allocator with the std::map from the Visual C++ 6.0 compiler. This brought up a compile error and I was wondering if anyone has an idea if that is an error on my side or maybe an incompability issue. Here is the error: c:\programme\microsoft visual studio\vc98\include\xtree(587) : error C2664: 'void __thiscall stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo>::deallocate(struct gtl::CMemoryTracker::SMemoryInfo *,unsigned int)' : Konvertierung des Par ameters 1 von 'struct std::_Tree<int,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMem oryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> >::_Node *' in 'struct gtl::CMemoryTracker::SMemoryInfo *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat c:\programme\microsoft visual studio\vc98\include\xtree(587) : Bei der Kompilierung der Member-Funktion 'void __thiscall std::_Tree<int,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMem oryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> >::_Freenode(struct std::_Tree<in t,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> >::_Kfn,struct std::less<i nt>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> >::_Node *)' der Klassenvorlage Here is the code line from the Visual C++ 6.0 _Tree implementation that causes the problem: void _Freenode(_Nodeptr _S) {allocator.deallocate(_S, 1); } Regards, Marc Kamradt | ||||
August 15, 2003 Re: allocators and the vc6-stl | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Marc Kamradt | In case you are wondering. I was trying to see if the error also occurs when I use the new_allocator. The error is the same with the new_allocator and the malloc_allocator. Regards, Marc Kamradt "Marc Kamradt" <marc@spieleentwickler.org> schrieb im Newsbeitrag news:bhjeb3$77f$1@digitaldaemon.com... > Hi! > > I was just trying to use the stlsoft::malloc_allocator with the std::map from the Visual C++ 6.0 compiler. This brought up a compile error and I was > wondering if anyone has an idea if that is an error on my side or maybe an incompability issue. > > Here is the error: > > c:\programme\microsoft visual studio\vc98\include\xtree(587) : error C2664: > 'void __thiscall stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo>::deallocate(struct > gtl::CMemoryTracker::SMemoryInfo *,unsigned int)' : Konvertierung des Par > ameters 1 von 'struct std::_Tree<int,struct std::pair<int const ,struct > gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct > gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMem > oryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo> >::_Node *' in 'struct > gtl::CMemoryTracker::SMemoryInfo *' nicht moeglich > Die Typen, auf die verwiesen wird, sind nicht verwandt; die > Konvertierung erfordert einen reinterpret_cast-Operator oder eine > Typumwandlung im C- oder Funktionsformat > c:\programme\microsoft visual studio\vc98\include\xtree(587) : Bei > der Kompilierung der Member-Funktion 'void __thiscall std::_Tree<int,struct > std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct > std::map<int,struct gtl::CMem > oryTracker::SMemoryInfo,struct std::less<int>,class > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo> >::_Freenode(struct std::_Tree<in t,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Kfn,struct std::less<i > nt>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Node *)' der Klassenvorlage > > Here is the code line from the Visual C++ 6.0 _Tree implementation that causes the problem: > > void _Freenode(_Nodeptr _S) {allocator.deallocate(_S, 1); } > > Regards, > > Marc Kamradt > > | |||
August 16, 2003 Re: allocators and the vc6-stl | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Marc Kamradt | Marc
Hmm ... surprised but not shocked.
I'm planning to release 1.6.5 next week, so will have it sorted by then.
Sorry for the inconvenience.
Cheers
Matthew
--
Matthew Wilson
STLSoft moderator and C++ monomaniac
mailto:matthew@stlsoft.org
http://www.stlsoft.org
news://news.digitalmars.com/c++.stlsoft
"I can't sleep nights till I found out who hurled what ball through what apparatus" -- Dr Niles Crane
----------------------------------------------------------------------------
---
"Marc Kamradt" <marc@spieleentwickler.org> wrote in message news:bhjeb3$77f$1@digitaldaemon.com...
> Hi!
>
> I was just trying to use the stlsoft::malloc_allocator with the std::map from the Visual C++ 6.0 compiler. This brought up a compile error and I
was
> wondering if anyone has an idea if that is an error on my side or maybe an incompability issue.
>
> Here is the error:
>
> c:\programme\microsoft visual studio\vc98\include\xtree(587) : error
C2664:
> 'void __thiscall stlsoft::new_allocator<struct
> gtl::CMemoryTracker::SMemoryInfo>::deallocate(struct
> gtl::CMemoryTracker::SMemoryInfo *,unsigned int)' : Konvertierung des Par
> ameters 1 von 'struct std::_Tree<int,struct std::pair<int const ,struct
> gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct
> gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class
> stlsoft::new_allocator<struct gtl::CMemoryTracker::SMem
> oryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct
> gtl::CMemoryTracker::SMemoryInfo> >::_Node *' in 'struct
> gtl::CMemoryTracker::SMemoryInfo *' nicht moeglich
> Die Typen, auf die verwiesen wird, sind nicht verwandt; die
> Konvertierung erfordert einen reinterpret_cast-Operator oder eine
> Typumwandlung im C- oder Funktionsformat
> c:\programme\microsoft visual studio\vc98\include\xtree(587) : Bei
> der Kompilierung der Member-Funktion 'void __thiscall
std::_Tree<int,struct
> std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct
> std::map<int,struct gtl::CMem
> oryTracker::SMemoryInfo,struct std::less<int>,class
> stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo>
> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct
> gtl::CMemoryTracker::SMemoryInfo> >::_Freenode(struct std::_Tree<in t,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo>
> >::_Kfn,struct std::less<i
> nt>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo>
> >::_Node *)' der Klassenvorlage
>
> Here is the code line from the Visual C++ 6.0 _Tree implementation that causes the problem:
>
> void _Freenode(_Nodeptr _S) {allocator.deallocate(_S, 1); }
>
> Regards,
>
> Marc Kamradt
>
>
| |||
August 17, 2003 Re: allocators and the vc6-stl | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Matthew Wilson | Great! I'll give it another try with the next release. Regards, Marc "Matthew Wilson" <matthew@stlsoft.org> schrieb im Newsbeitrag news:bhl012$23kp$1@digitaldaemon.com... > Marc > > Hmm ... surprised but not shocked. > > I'm planning to release 1.6.5 next week, so will have it sorted by then. > > Sorry for the inconvenience. > > Cheers > > Matthew > > > -- > Matthew Wilson > > STLSoft moderator and C++ monomaniac > > mailto:matthew@stlsoft.org > http://www.stlsoft.org > news://news.digitalmars.com/c++.stlsoft > > "I can't sleep nights till I found out who hurled what ball through what apparatus" -- Dr Niles Crane > > -------------------------------------------------------------------------- -- > --- > > "Marc Kamradt" <marc@spieleentwickler.org> wrote in message news:bhjeb3$77f$1@digitaldaemon.com... > > Hi! > > > > I was just trying to use the stlsoft::malloc_allocator with the std::map from the Visual C++ 6.0 compiler. This brought up a compile error and I > was > > wondering if anyone has an idea if that is an error on my side or maybe an > > incompability issue. > > > > Here is the error: > > > > c:\programme\microsoft visual studio\vc98\include\xtree(587) : error > C2664: > > 'void __thiscall stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo>::deallocate(struct gtl::CMemoryTracker::SMemoryInfo *,unsigned int)' : Konvertierung des Par > > ameters 1 von 'struct std::_Tree<int,struct std::pair<int const ,struct > > gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct > > gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class > > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMem > > oryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > > gtl::CMemoryTracker::SMemoryInfo> >::_Node *' in 'struct > > gtl::CMemoryTracker::SMemoryInfo *' nicht moeglich > > Die Typen, auf die verwiesen wird, sind nicht verwandt; die > > Konvertierung erfordert einen reinterpret_cast-Operator oder eine > > Typumwandlung im C- oder Funktionsformat > > c:\programme\microsoft visual studio\vc98\include\xtree(587) : Bei > > der Kompilierung der Member-Funktion 'void __thiscall > std::_Tree<int,struct > > std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct > > std::map<int,struct gtl::CMem > > oryTracker::SMemoryInfo,struct std::less<int>,class > > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > > >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > > gtl::CMemoryTracker::SMemoryInfo> >::_Freenode(struct std::_Tree<in t,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > > >::_Kfn,struct std::less<i > > nt>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > > >::_Node *)' der Klassenvorlage > > > > Here is the code line from the Visual C++ 6.0 _Tree implementation that causes the problem: > > > > void _Freenode(_Nodeptr _S) {allocator.deallocate(_S, 1); } > > > > Regards, > > > > Marc Kamradt > > > > > > | |||
August 20, 2003 Re: allocators and the vc6-stl | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Marc Kamradt | Ok, here're the problems: - The VC++ 6 (and prev) STLs need for the first parameter to an allocator's deallocate() to be void *, not T*. So I've fixed that by having it be of type deallocate_pointer, which is defined appropriately in all allocator classes. - The VC++ 6 (and prev) STLs assume the presence of a _Charalloc() member, which has the semantics of a single-parameter allocate(), and which returns char *. I've added a conditionally compiled function into all allocator classes. - As it transpires, the DMC/SGI requires that the allocate() and deallocate() methods are static, so I've added that into all classes as well, except winstl::shell_allocator as it has a member pointer to the shell allocator (even though this has been the COM task allocator since about Win98 / NT4 sp ??). These changes will be in 1.6.5, which I'm hoping to release this week. There's a lot of repeated crufty stuff here, and so I plan to factor all but the mem-api-specific stuff into a base template, which all specific classes will share, for 1.7.1 btw, please note that VC6 and prior do not implement the fourth template param of map correcty. It should be new_allocator<pair<const int, int> > (substitute your allocator type here) but is new_allocator<int> There's nothing I can do to help here, I'm afraid, but there's a simple example in ./test/stlsoft/allocator_test2/allocator_test2.cpp in the next release which shows the ifdef-ing necessary to get a portable solution. Cheers Matthew "Marc Kamradt" <marc@spieleentwickler.org> wrote in message news:bhjeb3$77f$1@digitaldaemon.com... > Hi! > > I was just trying to use the stlsoft::malloc_allocator with the std::map from the Visual C++ 6.0 compiler. This brought up a compile error and I was > wondering if anyone has an idea if that is an error on my side or maybe an incompability issue. > > Here is the error: > > c:\programme\microsoft visual studio\vc98\include\xtree(587) : error C2664: > 'void __thiscall stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo>::deallocate(struct > gtl::CMemoryTracker::SMemoryInfo *,unsigned int)' : Konvertierung des Par > ameters 1 von 'struct std::_Tree<int,struct std::pair<int const ,struct > gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct > gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMem > oryInfo> >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo> >::_Node *' in 'struct > gtl::CMemoryTracker::SMemoryInfo *' nicht moeglich > Die Typen, auf die verwiesen wird, sind nicht verwandt; die > Konvertierung erfordert einen reinterpret_cast-Operator oder eine > Typumwandlung im C- oder Funktionsformat > c:\programme\microsoft visual studio\vc98\include\xtree(587) : Bei > der Kompilierung der Member-Funktion 'void __thiscall std::_Tree<int,struct > std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct > std::map<int,struct gtl::CMem > oryTracker::SMemoryInfo,struct std::less<int>,class > stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Kfn,struct std::less<int>,class stlsoft::new_allocator<struct > gtl::CMemoryTracker::SMemoryInfo> >::_Freenode(struct std::_Tree<in t,struct std::pair<int const ,struct gtl::CMemoryTracker::SMemoryInfo>,struct std::map<int,struct gtl::CMemoryTracker::SMemoryInfo,struct std::less<int>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Kfn,struct std::less<i > nt>,class stlsoft::new_allocator<struct gtl::CMemoryTracker::SMemoryInfo> > >::_Node *)' der Klassenvorlage > > Here is the code line from the Visual C++ 6.0 _Tree implementation that causes the problem: > > void _Freenode(_Nodeptr _S) {allocator.deallocate(_S, 1); } > > Regards, > > Marc Kamradt > > | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply