Compiler compatibility fix for VMA_USE_STL_SHARED_MUTEX macro. Issue #52 thanks @jamesRumbleh !
diff --git a/src/vk_mem_alloc.h b/src/vk_mem_alloc.h
index 009c7b7..4a621f6 100644
--- a/src/vk_mem_alloc.h
+++ b/src/vk_mem_alloc.h
@@ -3139,9 +3139,16 @@
#endif
#ifndef VMA_USE_STL_SHARED_MUTEX
- // Minimum Visual Studio 2015 Update 2
- #if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023918
+ // Compiler conforms to C++17.
+ #if __cplusplus >= 201703L
#define VMA_USE_STL_SHARED_MUTEX 1
+ // Visual studio defines __cplusplus properly only when passed additional parameter: /Zc:__cplusplus
+ // Otherwise it's always 199711L, despite shared_mutex works since Visual Studio 2015 Update 2.
+ // See: https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/
+ #elif defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023918 && __cplusplus == 199711L && _MSVC_LANG >= 201703L
+ #define VMA_USE_STL_SHARED_MUTEX 1
+ #else
+ #define VMA_USE_STL_SHARED_MUTEX 0
#endif
#endif