STL, Standard Template Library is probably the most frightening component of C++. It is not required to use it for C++ programing, but it actually provides lot of base algorithms and containers.

When AbiWord started around 1998, the state of C++ compilers was not that great. Since AbiWord was supposed to be cross-platform, it was decided of a limited set of C++ features allowed to be used: no template, no exceptions, no multiple inheritence. That made the STL inappropriate, so base classes where written: vectors, hash tables, etc. Actually some containers like hash tables are in triplicate, including one that it barely used.

In 2004, after having lot of issues with our vector class using void* as a container type when storing integer values on 64-bits platform we decided to go with some templated classes. In fact I just templated one of the hash classes, the vector class and the stack class. Only simple template, no template function, in order to avoid possible pain with non conformant compilers, even if at the moment we only build using either gcc, or for Windows, Visual C++.

Now, I'm work on wrapping UT_Vector around a std::vector, and I will do so for some other classes. The idea is to switch to the STL (Standard C++ Library) and avoid the burdain of maintaining our libraries. At the moment everything compiles fine, but with a few glitches at run time. I'll post some benches once I have done some, including memory usage and binary size.