#pragma once template T* Allocate() { return new T(); } template void Deallocate(T* obj) { delete obj; } template T* AllocateArray(size_t size) { return new T[size]; } template void DeallocateArray(T* obj) { delete[] obj; }