.. _program_listing_file_Source_Containers_Inc_Containers_ArrayBatch.h: Program Listing for File ArrayBatch.h ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``Source\Containers\Inc\Containers\ArrayBatch.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include "Array.h" #include "Types.h" namespace Azura { namespace Memory { class Allocator; } namespace Containers { namespace Impl { template struct Get; template struct Get<0, First, Rest...> { Get() = delete; typedef First Type; }; template struct Get { Get() = delete; typedef typename Get::Type Type; }; } // namespace Impl template class ArrayBatch { template using Type = typename Impl::Get::Type; public: explicit ArrayBatch(Memory::Allocator &alloc); template Array, NumElements> &Get(); template const Array, NumElements> &Get() const; private: std::tuple...> mData; SizeType mElements{NumElements}; }; template ArrayBatch::ArrayBatch(Memory::Allocator &alloc) : mData(Array(alloc)...) {} template template Array::Type, NumElements> &ArrayBatch::Get() { return std::get(mData); } template template const Array::Type, NumElements> &ArrayBatch::Get() const { return std::get(mData); } } // namespace Containers } // namespace Azura