Я хочу, чтобы MemoryPool динамически назначал и отменял назначение памяти во время выполнения без вовлечения ОС в попытку ускорить выполнение кода (и учиться).Чтобы просто описать синтаксис, я хотел бы иметь возможность указывать размер сегментов памяти в качестве типа, который они содержат, или в виде необработанного размера.
Для этого я хочу создать шаблон, который может принимать либоВведите или size_t и отправьте вперед либо sizeof Type, либо размер.
template<size_t SegmentSize>
class MemoryPool_Internal
{
public:
static const size_t Size = SegmentSize;
/*Using SegmentSize to do logic*/
};
template<size_t Size>
class MemoryPool : public MemoryPool_Internal<Size> { };
template<class Size>
class MemoryPool : public MemoryPool_Internal<sizeof(Size)> { };
Что я хотел бы сделать с приведенным выше фрагментом, так это иметь
std::cout << MemoryPool<5>::Size << std::endl;
std::cout << MemoryPool<int>::Size << std::endl;
Для печати 5и sizeof (int).
Но 5 поднимает C3855, потому что это не класс, а int поднимает E0254, потому что тип не разрешен в первом шаблоне.Есть ли способ разрешить это во время компиляции с помощью предназначенных шаблонов для каждого?