make msvc6 compile (thanks peter)

so beat me if it does not work ;)
This commit is contained in:
Jens Ole Wund 2006-02-09 22:09:11 +00:00
parent 9c003086fe
commit c425ad9507

@ -29,6 +29,12 @@
#include "guardedalloc/MEM_guardedalloc.h"
#ifdef _MSC_VER
#if _MSC_VER < 1300 // 1200 == VC++ 6.0 according to boost
#define MS_VISUALC_6_0_WORKAROUND 1
#endif
#endif
template<typename _Tp>
struct MEM_Allocator
{
@ -40,16 +46,20 @@ struct MEM_Allocator
typedef const _Tp& const_reference;
typedef _Tp value_type;
#ifndef MS_VISUALC_6_0_WORKAROUND
template<typename _Tp1>
struct rebind {
typedef MEM_Allocator<_Tp1> other;
};
#endif
MEM_Allocator() throw() {}
MEM_Allocator(const MEM_Allocator& __a) throw() {}
#ifndef MS_VISUALC_6_0_WORKAROUND
template<typename _Tp1>
MEM_Allocator(const MEM_Allocator<_Tp1> __a) throw() { }
#endif
~MEM_Allocator() throw() {}
@ -57,6 +67,11 @@ struct MEM_Allocator
const_pointer address(const_reference __x) const { return &__x; }
#ifdef MS_VISUALC_6_0_WORKAROUND
char *_Charalloc(size_type n) {
return (char *) MEM_mallocN(n, "STL MEM_Allocator VC6.0");
}
#endif
// NB: __n is permitted to be 0. The C++ standard says nothing
// about what the return value is when __n == 0.
_Tp* allocate(size_type __n, const void* = 0) {
@ -68,10 +83,17 @@ struct MEM_Allocator
return __ret;
}
#ifndef MS_VISUALC_6_0_WORKAROUND
// __p is not permitted to be a null pointer.
void deallocate(pointer __p, size_type){
MEM_freeN(__p);
}
#else
// __p is not permitted to be a null pointer.
void deallocate(void* __p, size_type){
MEM_freeN(__p);
}
#endif
size_type max_size() const throw() {
return size_t(-1) / sizeof(_Tp);