From fd5077cd361f43d218d79570943442ba9cbe33cd Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Thu, 25 Jul 2019 09:32:16 -0700 Subject: [PATCH] Adding a VmaVector constructor for C++11 compatibility The std::vector constructor used (count + allocator) is only available in C++14 (see: https://en.cppreference.com/w/cpp/container/vector/vector) and compiling with C++11 and `VMA_USE_STL_VECTOR` will result in compile errors. This adds a new constructor and switches to using that for compatibility. --- src/vk_mem_alloc.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vk_mem_alloc.h b/src/vk_mem_alloc.h index 91f5b47..3524bd8 100644 --- a/src/vk_mem_alloc.h +++ b/src/vk_mem_alloc.h @@ -4097,6 +4097,9 @@ public: { } + VmaVector(size_t count, const T& value, const AllocatorT& allocator) + : VmaVector(count, allocator) {} + VmaVector(const VmaVector& src) : m_Allocator(src.m_Allocator), m_pArray(src.m_Count ? (T*)VmaAllocateArray(src.m_Allocator.m_pCallbacks, src.m_Count) : VMA_NULL), @@ -12127,7 +12130,7 @@ void VmaBlockVector::ApplyDefragmentationMovesCpu( void* pMappedData; }; VmaVector< BlockInfo, VmaStlAllocator > - blockInfo(blockCount, VmaStlAllocator(m_hAllocator->GetAllocationCallbacks())); + blockInfo(blockCount, BlockInfo(), VmaStlAllocator(m_hAllocator->GetAllocationCallbacks())); memset(blockInfo.data(), 0, blockCount * sizeof(BlockInfo)); // Go over all moves. Mark blocks that are used with BLOCK_FLAG_USED.