template class Block
{
public:
Block()
{
first = last = NULL;
}
~Block()
{
while (first)
{
block *next = first -> next;
delete first;
first = next;
}
}
private:
struct block_st
{
T *current, *last;
struct block_st *next;
T data[1];
} block;
block *first;
block *last;
};