Получение статического размера класса в операторе NEW
Как получить у класса в перегруженном операторе NEW размер самого класса ( по сути равный параметру size_t в new) но статического/константного типа (для шаблона).
Наивный пример:
template <size_t SIZE>
thread_local Bank bank(SIZE);
struct BASE {
void* operator new ( size_t ) {
bank< sizeof( *this ) >.Alloc(); // Да только "sizeof( *this )" в операторе new не допускается...
...
};
};
struct A : BASE {
int a;
//BASE::operator new; // Не требуется, так как наследуется от BASE само
};
void abc() { A* a = new A; }
...