YaaZ / VulkanMemoryAllocator-Hpp

C++ bindings for VulkanMemoryAllocator
Creative Commons Zero v1.0 Universal
57 stars 31 forks source link

Does not compile with older GCC versions #4

Closed TheJackiMonster closed 2 years ago

TheJackiMonster commented 2 years ago

I am currently using those C++ headers inside of a Vulkan framework and it does not compile on some of my systems (for example Ubuntu 22.04 LTS and SteamOS). Both provide older versions of the GCC in their repository which causes some issues like this:

/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In function \u2018vk::ResultValueType<vma::Allocator>::type vma::createAllocator(const vma::AllocatorCreateInfo&)\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:10:5: error: \u2018resultCheck\u2019 was not declared in this scope
   10 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::createAllocator");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:11:12: error: \u2018createResultValueType\u2019 was not declared in this scope
   11 |     return createResultValueType(result, allocator);
      |            ^~~~~~~~~~~~~~~~~~~~~

Those issues will come up with all calls of resultCheck using a result type parameter first and a string second. Similarly the other problem with createResultValueType will come up for all calls using a result type parameter first with one other argument or even with none other argument.

Also those issues do not occur using GCC 12.1.0 on Archlinux for example. However SteamOS will only provide 11.1.0 in its repositories and Ubuntu 22.04 LTS will provide 11.2.0.

I'm using CMake for the framework to include VMA and these headers. So maybe if there was a makro to branch an alternative way for those function calls, I could enable it when using GCC versions below 12.0.0. However I'm not really sure what's the cause of those issues. Otherwise I would open a PR. ^^'

TheJackiMonster commented 2 years ago

The full output from the compiler errors:

In file included from /home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc.hpp:16,
                 from /home/thejackimonster/vkcv-framework/config/lib/vma/vma.cpp:58:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In function \u2018vk::ResultValueType<vma::Allocator>::type vma::createAllocator(const vma::AllocatorCreateInfo&)\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:10:5: error: \u2018resultCheck\u2019 was not declared in this scope
   10 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::createAllocator");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:11:12: error: \u2018createResultValueType\u2019 was not declared in this scope
   11 |     return createResultValueType(result, allocator);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In function \u2018vk::ResultValueType<vma::VirtualBlock>::type vma::createVirtualBlock(const vma::VirtualBlockCreateInfo&)\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:24:5: error: \u2018resultCheck\u2019 was not declared in this scope
   24 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::createVirtualBlock");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:25:12: error: \u2018createResultValueType\u2019 was not declared in this scope
   25 |     return createResultValueType(result, virtualBlock);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<unsigned int>::type vma::Allocator::findMemoryTypeIndex(uint32_t, const vma::AllocationCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:136:5: error: \u2018resultCheck\u2019 was not declared in this scope
  136 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::findMemoryTypeIndex");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:137:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  137 |     return createResultValueType(result, memoryTypeIndex);
      |            ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc.hpp:16,
                 from /home/thejackimonster/vkcv-framework/config/lib/vma/vma.cpp:58:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<unsigned int>::type vma::Allocator::findMemoryTypeIndexForBufferInfo(const vk::BufferCreateInfo&, const vma::AllocationCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:152:5: error: \u2018resultCheck\u2019 was not declared in this scope
  152 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::findMemoryTypeIndexForBufferInfo");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:153:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  153 |     return createResultValueType(result, memoryTypeIndex);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<unsigned int>::type vma::Allocator::findMemoryTypeIndexForImageInfo(const vk::ImageCreateInfo&, const vma::AllocationCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:168:5: error: \u2018resultCheck\u2019 was not declared in this scope
  168 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::findMemoryTypeIndexForImageInfo");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:169:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  169 |     return createResultValueType(result, memoryTypeIndex);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::Pool>::type vma::Allocator::createPool(const vma::PoolCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:183:5: error: \u2018resultCheck\u2019 was not declared in this scope
  183 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createPool");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:184:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  184 |     return createResultValueType(result, pool);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::checkPoolCorruption(vma::Pool) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:230:5: error: \u2018resultCheck\u2019 was not declared in this scope
  230 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::checkPoolCorruption");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:231:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  231 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::Allocation>::type vma::Allocator::allocateMemory(const vk::MemoryRequirements&, const vma::AllocationCreateInfo&, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:270:5: error: \u2018resultCheck\u2019 was not declared in this scope
  270 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::allocateMemory");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:271:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  271 |     return createResultValueType(result, allocation);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018typename vk::ResultValueType<std::vector<vma::Allocation, VectorAllocator> >::type vma::Allocator::allocateMemoryPages(vk::ArrayProxy<const vk::MemoryRequirements>, vk::ArrayProxy<const vma::AllocationCreateInfo>, vk::ArrayProxyNoTemporaries<vma::AllocationInfo>, VectorAllocator&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:293:5: error: there are no arguments to \u2018resultCheck\u2019 that depend on a template parameter, so a declaration of \u2018resultCheck\u2019 must be available [-fpermissive]
  293 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::allocateMemoryPages");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:293:5: note: (if you use \u2018-fpermissive\u2019, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018typename vk::ResultValueType<std::vector<vma::Allocation, VectorAllocator> >::type vma::Allocator::allocateMemoryPages(vk::ArrayProxy<const vk::MemoryRequirements>, vk::ArrayProxy<const vma::AllocationCreateInfo>, vk::ArrayProxyNoTemporaries<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:304:5: error: there are no arguments to \u2018resultCheck\u2019 that depend on a template parameter, so a declaration of \u2018resultCheck\u2019 must be available [-fpermissive]
  304 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::allocateMemoryPages");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::Allocation>::type vma::Allocator::allocateMemoryForBuffer(vk::Buffer, const vma::AllocationCreateInfo&, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:323:5: error: \u2018resultCheck\u2019 was not declared in this scope
  323 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::allocateMemoryForBuffer");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:324:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  324 |     return createResultValueType(result, allocation);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::Allocation>::type vma::Allocator::allocateMemoryForImage(vk::Image, const vma::AllocationCreateInfo&, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:341:5: error: \u2018resultCheck\u2019 was not declared in this scope
  341 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::allocateMemoryForImage");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:342:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  342 |     return createResultValueType(result, allocation);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018void* vma::Allocator::mapMemory(vma::Allocation) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:426:5: error: \u2018resultCheck\u2019 was not declared in this scope
  426 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::mapMemory");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:427:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  427 |     return createResultValueType(result, data);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::flushAllocation(vma::Allocation, vk::DeviceSize, vk::DeviceSize) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:451:5: error: \u2018resultCheck\u2019 was not declared in this scope
  451 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::flushAllocation");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:452:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  452 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::invalidateAllocation(vma::Allocation, vk::DeviceSize, vk::DeviceSize) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:468:5: error: \u2018resultCheck\u2019 was not declared in this scope
  468 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::invalidateAllocation");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:469:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  469 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::flushAllocations(vk::ArrayProxy<const vma::Allocation>, vk::ArrayProxy<const long unsigned int>, vk::ArrayProxy<const long unsigned int>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:486:5: error: \u2018resultCheck\u2019 was not declared in this scope
  486 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::flushAllocations");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:487:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  487 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::invalidateAllocations(vk::ArrayProxy<const vma::Allocation>, vk::ArrayProxy<const long unsigned int>, vk::ArrayProxy<const long unsigned int>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:504:5: error: \u2018resultCheck\u2019 was not declared in this scope
  504 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::invalidateAllocations");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:505:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  505 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::checkCorruption(uint32_t) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:519:5: error: \u2018resultCheck\u2019 was not declared in this scope
  519 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::checkCorruption");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:520:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  520 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::DefragmentationContext>::type vma::Allocator::beginDefragmentation(const vma::DefragmentationInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:533:5: error: \u2018resultCheck\u2019 was not declared in this scope
  533 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::beginDefragmentation");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:534:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  534 |     return createResultValueType(result, context);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::DefragmentationPassMoveInfo>::type vma::Allocator::beginDefragmentationPass(vma::DefragmentationContext) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:558:5: error: \u2018resultCheck\u2019 was not declared in this scope
  558 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::beginDefragmentationPass");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:559:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  559 |     return createResultValueType(result, passInfo);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::DefragmentationPassMoveInfo>::type vma::Allocator::endDefragmentationPass(vma::DefragmentationContext) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:572:5: error: \u2018resultCheck\u2019 was not declared in this scope
  572 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::endDefragmentationPass");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:573:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  573 |     return createResultValueType(result, passInfo);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::bindBufferMemory(vma::Allocation, vk::Buffer) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:586:5: error: \u2018resultCheck\u2019 was not declared in this scope
  586 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::bindBufferMemory");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:587:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  587 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::bindBufferMemory2(vma::Allocation, vk::DeviceSize, vk::Buffer, const void*) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:603:5: error: \u2018resultCheck\u2019 was not declared in this scope
  603 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::bindBufferMemory2");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:604:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  604 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::bindImageMemory(vma::Allocation, vk::Image) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:620:5: error: \u2018resultCheck\u2019 was not declared in this scope
  620 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::bindImageMemory");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:621:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  621 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<void>::type vma::Allocator::bindImageMemory2(vma::Allocation, vk::DeviceSize, vk::Image, const void*) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:637:5: error: \u2018resultCheck\u2019 was not declared in this scope
  637 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::bindImageMemory2");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:638:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  638 |     return createResultValueType(result);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<std::pair<vk::Buffer, vma::Allocation> >::type vma::Allocator::createBuffer(const vk::BufferCreateInfo&, const vma::AllocationCreateInfo&, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:658:5: error: \u2018resultCheck\u2019 was not declared in this scope
  658 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createBuffer");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:659:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  659 |     return createResultValueType(result, pair);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<std::pair<vk::Buffer, vma::Allocation> >::type vma::Allocator::createBufferWithAlignment(const vk::BufferCreateInfo&, const vma::AllocationCreateInfo&, vk::DeviceSize, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:680:5: error: \u2018resultCheck\u2019 was not declared in this scope
  680 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createBufferWithAlignment");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:681:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  681 |     return createResultValueType(result, pair);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vk::Buffer>::type vma::Allocator::createAliasingBuffer(vma::Allocation, const vk::BufferCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:699:5: error: \u2018resultCheck\u2019 was not declared in this scope
  699 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createAliasingBuffer");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:700:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  700 |     return createResultValueType(result, buffer);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<std::pair<vk::Image, vma::Allocation> >::type vma::Allocator::createImage(const vk::ImageCreateInfo&, const vma::AllocationCreateInfo&, vk::Optional<vma::AllocationInfo>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:730:5: error: \u2018resultCheck\u2019 was not declared in this scope
  730 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createImage");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:731:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  731 |     return createResultValueType(result, pair);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vk::Image>::type vma::Allocator::createAliasingImage(vma::Allocation, const vk::ImageCreateInfo&) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:748:5: error: \u2018resultCheck\u2019 was not declared in this scope
  748 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::Allocator::createAliasingImage");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:749:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  749 |     return createResultValueType(result, image);
      |            ^~~~~~~~~~~~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp: In member function \u2018vk::ResultValueType<vma::VirtualAllocation>::type vma::VirtualBlock::virtualAllocate(const vma::VirtualAllocationCreateInfo&, vk::Optional<long unsigned int>) const\u2019:
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:834:5: error: \u2018resultCheck\u2019 was not declared in this scope
  834 |     resultCheck(result, VMA_HPP_NAMESPACE_STRING "::VirtualBlock::virtualAllocate");
      |     ^~~~~~~~~~~
/home/thejackimonster/vkcv-framework/lib/VulkanMemoryAllocator-Hpp/include/vk_mem_alloc_funcs.hpp:835:12: error: \u2018createResultValueType\u2019 was not declared in this scope
  835 |     return createResultValueType(result, allocation);
      |            ^~~~~~~~~~~~~~~~~~~~~
make[3]: *** [config/lib/vma/CMakeFiles/VulkanMemoryAllocator.dir/build.make:76: config/lib/vma/CMakeFiles/VulkanMemoryAllocator.dir/vma.cpp.o] Fehler 1
make[2]: *** [CMakeFiles/Makefile2:867: config/lib/vma/CMakeFiles/VulkanMemoryAllocator.dir/all] Fehler 2
make[1]: *** [CMakeFiles/Makefile2:1717: projects/voxelization/CMakeFiles/voxelization.dir/rule] Fehler 2
make: *** [Makefile:546: voxelization] Fehler 2
YaaZ commented 2 years ago

I bet this is an issue with ADL, can you please try adding vk:: namespace prefix and see if it fixes the problem in your setup? I think simple text replace will do, like "createResultValueType" -> "vk::createResultValueType"

TheJackiMonster commented 2 years ago

@YaaZ Sounds good. I will try that soon and report afterwards.

TheJackiMonster commented 2 years ago

Unfortunately the issue does not get solved by adding the namespace. It still compiles fine on my Archlinux system but in Ubuntu 22.04 LTS it states the functions would not be a member of that namespace. I will try if it helps to explicitly state the type of the template functions.

TheJackiMonster commented 2 years ago

Nevermind, I think I know the issue. I use the system Vulkan headers which are too old. I think I know how to fix this. ^^'

TheJackiMonster commented 2 years ago

I could fix the issue. I used system wide Vulkan headers and hpp to compile the framework but they didn't contain those functions because the distros didn't ship the most recent headers. I replaced it with the usage of the newest headers and hpp via submodule. Now it works.