diff --git a/ide/vs2017/mimalloc.vcxproj b/ide/vs2017/mimalloc.vcxproj
index d29c2c7f..70bf4366 100644
--- a/ide/vs2017/mimalloc.vcxproj
+++ b/ide/vs2017/mimalloc.vcxproj
@@ -129,7 +129,7 @@
true
../../include
_CRT_SECURE_NO_WARNINGS;MI_DEBUG=3;%(PreprocessorDefinitions);
- CompileAsC
+ CompileAsCpp
false
stdcpp14
diff --git a/ide/vs2019/mimalloc.vcxproj b/ide/vs2019/mimalloc.vcxproj
index c12955c3..729a5c63 100644
--- a/ide/vs2019/mimalloc.vcxproj
+++ b/ide/vs2019/mimalloc.vcxproj
@@ -114,7 +114,7 @@
Level4
Disabled
true
- true
+ Default
../../include
MI_DEBUG=3;%(PreprocessorDefinitions);
CompileAsCpp
diff --git a/ide/vs2022/mimalloc.vcxproj b/ide/vs2022/mimalloc.vcxproj
index 9081881c..49eb5180 100644
--- a/ide/vs2022/mimalloc.vcxproj
+++ b/ide/vs2022/mimalloc.vcxproj
@@ -95,12 +95,12 @@
Level4
Disabled
true
- true
+ Default
../../include
MI_DEBUG=3;%(PreprocessorDefinitions);
CompileAsCpp
false
- Default
+ stdcpp20
@@ -114,7 +114,7 @@
Level4
Disabled
true
- true
+ Default
../../include
MI_DEBUG=4;%(PreprocessorDefinitions);
CompileAsCpp
@@ -141,7 +141,7 @@
Level4
MaxSpeed
true
- true
+ Default
../../include
%(PreprocessorDefinitions);NDEBUG
AssemblyAndSourceCode
@@ -151,7 +151,7 @@
Default
CompileAsCpp
true
- Default
+ stdcpp20
true
@@ -169,7 +169,7 @@
Level4
MaxSpeed
true
- true
+ Default
../../include
%(PreprocessorDefinitions);NDEBUG
AssemblyAndSourceCode
diff --git a/include/mimalloc.h b/include/mimalloc.h
index 27f6b331..4fc7a752 100644
--- a/include/mimalloc.h
+++ b/include/mimalloc.h
@@ -470,13 +470,13 @@ template bool operator==(const mi_stl_allocator& , const
template bool operator!=(const mi_stl_allocator& , const mi_stl_allocator& ) mi_attr_noexcept { return false; }
-#if (__cplusplus >= 201103L) || (_MSC_VER >= 1920) // C++11, at least vs2019
+#if (__cplusplus >= 201103L) || (_MSC_VER >= 1900) // C++11
#define MI_HAS_HEAP_STL_ALLOCATOR 1
#include // std::shared_ptr
// Common base class for STL allocators in a specific heap
-template struct _mi_heap_stl_allocator_common : public _mi_stl_allocator_common {
+template struct _mi_heap_stl_allocator_common : public _mi_stl_allocator_common {
using typename _mi_stl_allocator_common::size_type;
using typename _mi_stl_allocator_common::value_type;
using typename _mi_stl_allocator_common::pointer;
@@ -495,7 +495,7 @@ template struct _mi_heap_stl_allocator_common : public _m
#endif
void collect(bool force) { mi_heap_collect(this->heap.get(), force); }
- template bool is_equal(const _mi_heap_stl_allocator_common& x) const { return (this->heap == x.heap); }
+ template bool is_equal(const _mi_heap_stl_allocator_common& x) const { return (this->heap == x.heap); }
protected:
std::shared_ptr heap;
@@ -503,10 +503,10 @@ protected:
_mi_heap_stl_allocator_common() {
mi_heap_t* hp = mi_heap_new();
- this->heap.reset(hp, (destroy ? &heap_destroy : &heap_delete)); /* calls heap_delete/destroy when the refcount drops to zero */
+ this->heap.reset(hp, (_mi_destroy ? &heap_destroy : &heap_delete)); /* calls heap_delete/destroy when the refcount drops to zero */
}
_mi_heap_stl_allocator_common(const _mi_heap_stl_allocator_common& x) mi_attr_noexcept : heap(x.heap) { }
- template _mi_heap_stl_allocator_common(const _mi_heap_stl_allocator_common& x) mi_attr_noexcept : heap(x.heap) { }
+ template _mi_heap_stl_allocator_common(const _mi_heap_stl_allocator_common& x) mi_attr_noexcept : heap(x.heap) { }
private:
static void heap_delete(mi_heap_t* hp) { if (hp != NULL) { mi_heap_delete(hp); } }