Skip to main content

Posts

Showing posts from July, 2006

Generic container idioms

Developing generic containers in C++ can become complex if you want to develope truly generic containers (as much as they can get). Relaxing the requirements on type T is the key behind developing truly generic containers. There a few C++ idioms to actually achieve the "lowest denominator" possible with requirements on type T.

It is easy to come up with a generic stack which requires following operations defiend on type T: a default constructor, a copy constructor, a non-throwing destructor and a copy assignment operator. But thats too much!

The requirements can be reduced to the folloing list: a copy constructor and a non-throwing destructor.

To achieve this, a generic container should be able to allocate uninitialized memory and invoke constructor(s) only once on each element while "initializing" them. This is possible using following two techniques:

1. operator new:
void * mem = operator new (sizeof (T) * NUMBER_OF_ELEMENTS);

2. construct helper using placement ne…